1

我已将 bunyan 日志记录添加到我的应用程序的各个子系统中。但是当我看到日志文件时,我发现日志不是按时间戳排序的。我认为这是意料之中的,因为 nodejs 的异步特性。

我想知道是否有任何方法可以更改它,以便日志按顺序(按时间顺序)显示?

4

1 回答 1

1

如果您还在寻找 peek 性能、最小的内存开销等,那么在运行时记录器中保证排序顺序是很棘手的。正如您所建议的,节点的异步特性对此有所贡献。

可能不是您想听到的答案,但您需要对文件进行后处理以保证顺序。在 linux 上,一个简单的解决方案是只对日志文件使用 sort (如果您的时间戳是 ISO 格式并且位于每行的前面,这应该可以工作):

 $ sort your-bunyan-logfile

现在您可能正在寻找对实时日志进行排序。在技​​术上并不困难,但我不知道有什么开箱即用的方法。您需要编写一些东西,在内存中保留多行至少很短的时间(以方便那些迟到的日志),然后在短暂的延迟后显示它们。您需要做出一些关于要保留的最大线以及保留多长时间的决定...

这一切都超出了您想要让自己进入的范围,但是如果您构建了这样做的东西(并调用它livesort),让它从标准输入读取并写入标准输出,那么您可以执行类似的操作来监控实时日志文件:

 $ tail -f your-bunyan-logfile | livesort 

祝你好运!-达林

于 2017-08-26T14:37:56.093 回答