Nodejs在生产中调试错误

Ism*_*ail 7 debugging node.js

我有一个在生产中运行的nodejs脚本

我不太可能(曾经一千次)得到这样的错误:

TypeError: value is out of bounds
    at checkInt (buffer.js:1009:11)
    at Buffer.writeUInt16LE (buffer.js:1067:5)
    at Object.foo.bar (/fake/path/name.js:123:1);
    at Object.foo.bar2 (/fake/path/name2.js:123:1);
    at Object.foo.bar3 (/fake/path/name3.js:123:1);
Run Code Online (Sandbox Code Playgroud)

导致生产服务器崩溃......

太棒了我有一个堆栈跟踪!但我想知道每个电话或所有数据的当前数据是什么?

有什么好的工具或代码可用于生产代码的错误记录(使用它的当前数据)?

小智 7

我强烈建议使用WinstonBunyan.选择npm包是您的应用程序的决定.

您可以通过浏览npm页面中可用的统计信息来对可用的npm包进行基准测试.统计数据基本上如下.

  1. 在最后一天下载
  2. 在上周下载
  3. 上个月的下载量
  4. 打开问题和打开拉取请求.

最近有更多的下载量表明从长远来看,您正在使用的模块有很大的支持.所以这很重要.

Winstan和Bunyan都是市场上最好的npm软件包,主要区别在于,Winstan对于正常的日志记录来说非常棒和灵活.当然,Winstan提供了大量的日志记录功能.但是,与Bunyan相比,要想利用这些功能,需要付出一些努力.

另一方面,Bunyan特别支持" 分析日志 " 的事实.所以基本上Bunyan用于日志处理.因此,如果您想分析日志,日志文件,强烈建议您使用Bunyan.使用Bunyan调整日志对Winstan来说相当容易.

我对Bunyan和Winstan进行了彻底的比较.请查看下面的链接,查看Winstan和Bunyan如何使用,具体取决于记录到Node应用程序的范围,用例和必要性. 链接:https://docs.google.com/document/d/1pD9PLyxlcHVxxOvserNLO9tAz-QA_Co-xo6cWLhLghc/edit?usp=sharing

同样在生产环境中,请确保明智地使用日志记录级别.生产环境中最常用的日志记录级别是:

  • 错误
  • 信息
  • 调试


Gio*_*uti 4

你可以使用温斯顿皮诺

使用winston,您可以在您想要的位置加载许多日志模块,并且可以在线存储日志。我从不使用 pino,但我读过有关它的好文章。

设置环境变量以选择输出日志的位置,例如,仅当您处于开发状态时,您才不会在标准输出上显示输出,而仅当应用程序处于生产状态时,您才会在线存储。