error 事件的注册
多次注册 error 事件不会重复执行多个回调var fn window.onerror function() { console.log(arguments); }; window.addEventListener(error, fn); window.addEventListener(error, fn);触发错误之后上面代码的结果为window.onerror和addEventListener都执行了并只执行了一次。4. 收集日志的量没有必要将所有的错误信息全部送到 Log 中这个量太大了。如果网页 PV 有 1kw那么一个必现错误发送的 log 信息将有 1kw 条大约一个 G 的日志。我们可以给Reporter函数添加一个采样率function needReport (sampling){ // sampling: 0 - 1 return Math.random() sampling; } Reporter.send function(errInfo, sampling) { if(needReport(sampling || 1)){ Reporter._send(errInfo); } };这个采样率可以按需求来处理可以同上使用一个随机数也可以使用 cookie 中的某个字段如 nickname的最后一个字母/数字来判定也可以将用户的 nickname 进行 hash 计算再通过最后一位的字母/数字来判断总之方法是很多的。☞ 收集日志布点位置为了更加精准的拿到错误信息有效地统计错误日志我们应该更多地采用主动式埋点比如在一个接口的请求中// Module A Get Shops Data $.ajax({ url: URL, dataType: jsonp, success: function(ret) { if(ret.status failed) { // 埋点 1 return Reporter.send({ category: WARN, msg: Module_A_GET_SHOPS_DATA_FAILED }); } if(!ret.data || !ret.data.length) { // 埋点 2 return Reporter.send({ category: WARN, msg: Module_A_GET_SHOPS_DATA_EMPTY }); } }, error: function() { // 埋点 3 Reporter.send({ category: ERROR, msg: Module_A_GET_SHOPS_DATA_ERROR }); } });上面我们精准地布下了三个点描述十分清晰这三个点会对我们后续排查线上问题提供十分有利的信息。☞ 关于try..catch的使用对于try..catch的使用我的建议是能不用尽量不要用。JS代码都是自己写出来的哪里会出现问题会出现什么问题心中应该都有个谱平时用到try..catch的一般只有两个地方// JSON 格式不对 try{ JSON.parse(JSONString); }catch(e){} // 存在不可 decode 的字符 try{ decodeComponentURI(string); }catch(e){}类似这样的错误都是不太可控的。可以在使用到try..catch的地方思考是否可以使用其他方式做兼容。感谢 EtherDream 的补充。☞ 关于window.onerror的使用可以尝试如下代码// test.js throw new Error(SHOW ME); window.onerror function(){ console.log(arguments); // 阻止在控制台中打印错误信息 return true; };上面的代码直接报错了没有继续往下执行。页面中可能有好几个 script 标签但是window.onerror这个错误监听一定要放到最前头☞ 错误的警报与提示什么时候该警报不能有错就报。上面也说了因为网络环境和浏览器环境因素复杂页面我们允许千分之一的错误率。日志处理后的数据图图中有两根线橙色线是今日的数据浅蓝色线是往日平均数据每隔 10 分钟产生一条记录横坐标是 0-24 点的时间轴纵坐标是错误量。可以很明显的看出在凌晨一两点左右服务出现了异常错误信息是平均值的十几倍那么这个时候就改报警了。报警的条件可以设置得严苛一点因为误报是件很烦人的事情短信、邮件、软件等信息轰炸有的时候还是大半夜。那么一般满足如下条件可以报警错误超过阈值比如 10分钟最多允许 100 个错误结果超过了 100错误超过平均值的 10 倍超过平均值就报警这个逻辑显然不正确但是超过了平均值的 10 倍基本可以认定服务出问题了在纳入对比之前要过滤同 IP 出现的错误比如一个错误出现在 for 循环或者 while 循环中再比如一个用户在蹲点抢购不停的刷新☞ 友好的错误提示对比下面两条日志catch 的错误日志Uncaught ReferenceError: vd is not defined自定义的错误日志“生日模块中获取后端接口信息时eval 解析出错错误内容为vd is not defined.”该错误在最近 10 分钟内出现 1000 次这个错误往日的平均出错量是 50 次 / 10 分钟☞ 网络错误日志工作草案W3C Web Performance工作组发布了网络错误日志工作草案。该文档定义了一个机制允许Web站点声明一个网络错误汇报策略浏览器等用户代理可以利用这一机制汇报影响资源正确加载的网络错误。该文档还定义了一个错误报告的标准格式及其在浏览器和Web服务器之间的传输机制。详细草案http://www.w3.org/TR/2015/WD-network-error-logging-20150305/☞ 小结功能、测试和监控是程序开发的三板斧很多工程师可以将功能做的尽善尽美也了解一些测试方面的知识可是在监控这个方向上基本处于大脑空白。错误日志的收集、整理算是监控的一个小部分但是它对我们了解网站稳定性至关重要。文中有忽略的地方希望读者可以补充错误的地方还望斧正。

相关新闻

收集日志的方法

收集日志的方法

主动判断 我们在一些运算之后&#xff0c;得到一个期望的结果&#xff0c;然而结果不是我们想要的 // test.js function calc(){// code...return val; } if(calc() ! "someVal"){Reporter.send({position: "test.js::<Function>calc"msg: "c…

2026/7/3 1:13:46阅读更多 →
模型动态量化实践:让大模型瘦身加速的实战指南

模型动态量化实践:让大模型瘦身加速的实战指南

一、引言&#xff1a;当BERT变得"臃肿"&#xff0c;我们该怎么办&#xff1f; 自从2018年Google提出BERT以来&#xff0c;基于Transformer架构的预训练模型彻底改变了自然语言处理&#xff08;NLP&#xff09;的格局。然而&#xff0c;“成也萧何&#xff0c;败也萧…

2026/7/3 1:13:46阅读更多 →
MySQL零基础入门(二)

MySQL零基础入门(二)

CentOS 7 下安装 MySQL 8.0 详细教程 MySQL版本&#xff1a;8.0.x 操作系统&#xff1a;CentOS 7&#xff08;演示环境为 CentOS Linux release 7.9.2009&#xff09; 安装方式&#xff1a;MySQL Yum 仓库 前置要求&#xff1a;安装之前先确保没有 MySQL 服务正在运行&#xff…

2026/7/3 1:08:46阅读更多 →
从AI编程助手到自动化工作流:构建可持续运行的AI Agent系统

从AI编程助手到自动化工作流:构建可持续运行的AI Agent系统

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Claude 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 最近在技术社区里&#xff0c;一个概念被反复提及&#xff0c;热度持续攀升&#xff1a; AI Agent 构建 AI Agent 。听起来有点“…

2026/7/3 2:28:50阅读更多 →
专知智库 · 定义者时代的思想架构师——将企业关键资产转化为市场思想领导力

专知智库 · 定义者时代的思想架构师——将企业关键资产转化为市场思想领导力

专知智库 定义者时代的思想架构师——将企业关键资产转化为市场思想领导力商业竞争的形态正在发生根本性跃迁。上一个十年&#xff0c;竞争围绕“产品”与“渠道”展开&#xff1b;下一个十年&#xff0c;竞争将围绕 “认知”与“定义” 展开。谁能在行业的思想版图上占据制高…

2026/7/3 2:28:50阅读更多 →
从M4Markets客服回应来看,该怎么看?

从M4Markets客服回应来看,该怎么看?

评估M4Markets时&#xff0c;真正能拉开差异的&#xff0c;往往是基础细节是否持续到位。从信息透明角度看&#xff0c;M4Markets的优势更像是把基础环节维护得持续而连贯。把问题拆开去看&#xff0c;品牌方在基础服务、说明完整度和提醒意识上的表现就更容易被感知。服务团队…

2026/7/3 2:28:50阅读更多 →
科研AI工具全家桶实战测评:从部署到工作流整合的完整指南

科研AI工具全家桶实战测评:从部署到工作流整合的完整指南

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Claude 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 这类工具最值得先看的不是功能列表&#xff0c;而是能不能在你的日常科研流程里真正用起来&#xff0c;以及每个环节的“技能”到底…

2026/7/3 2:28:50阅读更多 →
【会员专享数据】1979—2025年中国5km分辨率逐年土壤湿度指数栅格数据

【会员专享数据】1979—2025年中国5km分辨率逐年土壤湿度指数栅格数据

水文数据是我们在各项研究中都经常使用的数据&#xff0c;尤其是高空间精度和高时间精度的水文数据。常见的水文指标有河流径流量、雪水当量等。在此前的文章中&#xff0c;我们基于Shaun Harrigan等学者于2019年11月分享在Early Warning Data Store (EWDS)网站上的数据集&…

2026/7/3 2:28:50阅读更多 →
腾讯再放大招,企微 Agent 大圆开启内测

腾讯再放大招,企微 Agent 大圆开启内测

这是苍何的第 557 篇原创&#xff01;大家好&#xff0c;我是苍何。企微最近悄悄上了个新功能&#xff0c;原生 AI 智能助理「大圆」&#xff0c;目前还在灰度内测中。简单说&#xff0c;大圆就是企微里内置的 AI Agent。群里它知道你在聊啥&#xff0c;你在看文档它知道文档写…

2026/7/3 2:23:50阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/7/2 12:10:34阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中&#xff0c;LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头&#xff0c;其核心是一颗高性能CMOS图像传感器&#xff0c;配合专用解码芯片&#xff0c;能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”&#xff0c;而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号&#xff0c;但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后&#xff0c;…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”&#xff0c;而是一份实操者手记&#xff1a;当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书&#xff0c;也不是学术会议的议程表&#xff0c;而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/3 2:08:15阅读更多 →