javascript把前端错误记录到后台服务器
2015-11-06 14:10
155 查看
开发 Web 应用程序过程中的一种常见的做法,就是集中保存错误日志,以便查找重要错误的原因。
例如数据库和服务器错误都会定期写入日志,而且会按照常用 API 进行分类。在复杂的 Web 应用程序中,我们同样推荐你把 JavaScript 错误也回写到服务器。换句话说,也要将这些错误写入到保存服务器端错误的地方, 只不过要标明它们来自前端。把前后端的错误集中起来, 能够极大地方便对数据的分析。要建立这样一种 JavaScript 错误记录系统,首先需要在服务器上创建一个页面(或者一个服务器入口点) ,用于处理错误数据。这个页面的作用无非就是截获url然后从查询字符串中取得数据,然后再将数据写入错误日志中。这个页面可能会使用如下所示的函数:
这个 logError() 函数接收两个参数:表示严重程度的数值或字符串(视所用系统而异)及错误消息。
其中,使用了 Image 对象来发送请求,这样做非常灵活,主要表现如下几方面:
1、所有浏览器都支持 Image 对象,包括那些不支持 XMLHttpRequest 对象的浏览器。
2、可以避免跨域限制。通常都是一台服务器要负责处理多台服务器的错误,而这种情况下使用XMLHttpRequest 是不行的。
3、在记录错误的过程中出问题的概率比较低。大多数 Ajax 通信都是由 JavaScript 库提供的包装函数来处理的,如果库代码本身有问题,而你还在依赖该库记录错误,可想而知,错误消息是不可能得到记录的。
只要是使用 try-catch 语句,就应该把相应错误记录到日志中。来看下面的例子。
在这里,一旦模块初始化失败,就会调用 logError() 。第一个参数是 “nonfatal” (非致命) ,表示错误的严重程度。第二个参数是上下文信息加上真正的 JavaScript 错误消息。记录到服务器中的错误消息应该尽可能多地带有上下文信息,以便鉴别导致错误的真正原因。
如果想看代码的话,可以参看下面这篇文章:
/article/5727665.html
例如数据库和服务器错误都会定期写入日志,而且会按照常用 API 进行分类。在复杂的 Web 应用程序中,我们同样推荐你把 JavaScript 错误也回写到服务器。换句话说,也要将这些错误写入到保存服务器端错误的地方, 只不过要标明它们来自前端。把前后端的错误集中起来, 能够极大地方便对数据的分析。要建立这样一种 JavaScript 错误记录系统,首先需要在服务器上创建一个页面(或者一个服务器入口点) ,用于处理错误数据。这个页面的作用无非就是截获url然后从查询字符串中取得数据,然后再将数据写入错误日志中。这个页面可能会使用如下所示的函数:
function logError(sev, msg){ var img = new Image(); img.src = "log.php?sev=" + encodeURIComponent(sev) + "&msg=" + encodeURIComponent(msg);//只要为image对象设置src属性值,即可完成请求,图片预加载也使用了image的这个特性 }
这个 logError() 函数接收两个参数:表示严重程度的数值或字符串(视所用系统而异)及错误消息。
其中,使用了 Image 对象来发送请求,这样做非常灵活,主要表现如下几方面:
1、所有浏览器都支持 Image 对象,包括那些不支持 XMLHttpRequest 对象的浏览器。
2、可以避免跨域限制。通常都是一台服务器要负责处理多台服务器的错误,而这种情况下使用XMLHttpRequest 是不行的。
3、在记录错误的过程中出问题的概率比较低。大多数 Ajax 通信都是由 JavaScript 库提供的包装函数来处理的,如果库代码本身有问题,而你还在依赖该库记录错误,可想而知,错误消息是不可能得到记录的。
只要是使用 try-catch 语句,就应该把相应错误记录到日志中。来看下面的例子。
for (var i=0, len=mods.length; i < len; i++){ try { mods[i].init(); } catch (ex){ logError("nonfatal", "Module init failed: " + ex.message); } }
在这里,一旦模块初始化失败,就会调用 logError() 。第一个参数是 “nonfatal” (非致命) ,表示错误的严重程度。第二个参数是上下文信息加上真正的 JavaScript 错误消息。记录到服务器中的错误消息应该尽可能多地带有上下文信息,以便鉴别导致错误的真正原因。
如果想看代码的话,可以参看下面这篇文章:
/article/5727665.html
相关文章推荐
- 详解javascript中的事件处理
- fast-json.jar的使用方法
- Extjs 使用 themes
- crocs code ide-js中的一些常用总结
- jsoup选择具有多个class的标签
- js 判断是否是空对象
- 屏蔽JS错误提示 IE6 IE8
- JavaScript之事件处理详解
- Js模块化开发案例1——Tab切换
- JS实现刷新iframe的方法
- JavaScript设计模式 Item 6 --单例模式Singleton
- JavaScript设计模式 Item 6 --单例模式Singleton
- javascript for...in 语句
- ExtJS 性能优化注意要点
- jstack和线程dump分析
- javascript设计模式-装饰着模式
- js中使用new Date(str)创建时间对象不兼容firefox和ie的解决方式
- js 三层引号嵌套
- javascript类的创建及继承演变的过程
- JavaScript设计模式 Item 5 --链式调用