在日志中获取行号是nodejs中没有日志库可以解决的固有问题吗?

swa*_*ang 5 javascript performance logging line-numbers node.js

我正要在我的应用程序中使用winston,然后我意识到它无法在日志中显示函数名称/行号,我认为这对于调试服务器端应用程序非常重要。

经过一番挖掘,我在温斯顿的 github 问题页面上找到了解释。

他们非常清楚地解释了原因是性能,在每个日志记录调用上获取堆栈跟踪非常昂贵。

然而,当我寻找温斯顿替代品时,我发现一些库已经提供了记录行号的功能,例如 Bunyan、ScribeBristol。我查看了Bristol的源代码,它对函数有以下注释getOrigin

/**
   * Finds the origin of the Bristol log call, and supplies the file path and
   * line number.
   * This function uses JavaScriptStackTraceApi to be as fast as possible:
   * https://code.google.com/p/v8-wiki/wiki/JavaScriptStackTraceApi
Run Code Online (Sandbox Code Playgroud)

我找到了关于这里的文档JavaScriptStackTraceApi

我只是好奇,这与温斯顿家伙谈论的堆栈跟踪类型相同吗?获取行号是 Nodejs 中固有的问题,没有日志库可以解决吗?

我希望记录行号,但不希望以严重的性能损失为代价。Bristol看起来确实不错,有人看过它的性能基准吗?或者任何打开行号功能的日志库的性能基准?