使用 JSNLog 将 JavaScript 异常包含在服务器端日志中






4.94/5 (21投票s)
JSNLog 允许您在客户端 JavaScript 中插入记录器,在 web.config 中配置它们,并将它们的消息存储在您的服务器端日志中。
将 JavaScript 异常日志记录与您的服务器端日志集成。
引言
JSNLog JavaScript 日志记录包是 Log4Net、NLog、Elmah 等的 JavaScript 对应物。它允许您在 JavaScript 代码中插入记录器。它会自动将日志消息发送到服务器端组件,然后将其插入到您现有的服务器端日志中。它支持 Log4Net、NLog、Elmah 和 Common.Logging。
因为它具有合理的默认配置设置,您可以在安装 JSNLog Nuget 包后立即开始记录日志。
它有很多选项,从 JavaScript 异常的堆栈跟踪到关联消息的请求 ID,以及减少日志消息数量的各种过滤器。您还可以记录到浏览器控制台,因此不再需要用 console.log 语句来弄乱您的代码。所有这些都可以在您的 web.config 或 JavaScript 中进行配置。
为什么以及如何
您的网站由在服务器上运行的 C#/VB 代码和在浏览器上运行的 JavaScript 组成。

当您的 C#/VB 代码中发生异常时,您会记录它,以便您可以修复错误。
使用您的服务器端日志记录包,例如 Log4Net、NLog 或 Elmah,通过 web.config 配置记录器。
try { .... } catch (Exception e) { ILog log = LogManager.GetLogger("serverlogger"); log.Fatal(e.ToString()); }

但是您的 JavaScript 代码中的异常呢?
try { .... } catch(err) { ???? }

使用 JSNLog 在客户端上记录 JavaScript 异常,它将其发送到服务器。
JSNLog 将把 JavaScript 异常日志消息及其堆栈跟踪传递给您的服务器端日志记录包,这样它就会出现在您的服务器端日志中。您可以记录额外的信息,例如变量的值。
try { .... } catch(e) { // Log the exception, complete with stack trace JL("jsLogger").fatalException({ "msg": "something went wrong!", "variable1": variable1, ... }, e); }
或者使用 window.onerror 处理程序来捕获所有未捕获的异常
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) { JL("onerrorLogger").fatalException({ "msg": "something went wrong!", "errorMsg": errorMsg, "url": url, "line number": lineNumber, "column": column }, errorObj); return false; }

优点
- 广泛的 文档。易于安装。
- 无需向第三方日志记录服务支付费用。
- JavaScript 日志消息与您的服务器端日志消息进入相同的日志。
- 或者将 JavaScript 日志消息发送到浏览器控制台。
- 使用一个小的 JavaScript 库,可以作为 AMD 模块或简单的 script 标签加载,或者作为 捆绑包的一部分。
- 请求 ID 将同一用户会话生成的 JavaScript 日志消息和服务器端日志消息关联起来。
- 在您的 web.config 中配置 JavaScript 记录器。
- 许多过滤选项可以防止您的服务器被 JavaScript 日志消息淹没。
- 选择以 2 个或更多批次发送 JavaScript 日志消息以提高效率。
- 记录 JSON 对象以及字符串。
下一步
- 通过 NuGet 安装 JSNLog (如何)
Install-Package JSNLog
- JSNLog JavaScript 日志记录包的网站上有完整的文档。
如果您喜欢这篇文章,请投票支持它。