我在应用程序的各个子系统中添加了bunyan日志记录。但当我看到日志文件时,我发现日志不是按时间戳排序的。我认为这是意料之中的事,因为nodejs的异步特性。
我想知道是否有任何方法可以改变这一点,以便日志按顺序(按时间顺序)显示
如果您也在寻找peek性能、最小内存开销等,那么在运行时记录器中保证排序顺序是很棘手的。
可能不是你想听到的答案,但你需要对文件进行后期处理以保证订单。在linux上,一个简单的解决方案是只对日志文件使用排序(如果时间戳是ISO格式的,并且位于每行的前面,则该方法应该有效):
$ sort your-bunyan-logfile
现在,您可能正在对活动日志进行排序。技术上并不困难,但我不知道有什么能开箱即用。您需要编写一些东西,使内存中的许多行至少保持一小段时间(以方便那些延迟的日志),然后在短时间延迟后显示它们。你需要决定要保留的最大线以及保留多长时间。。。
这一切都超出了你想要的范围,但如果你构建了这样的东西(并称之为livesort
),让它从stdin读取并写入stdout,那么你可以做这样的事情来监控实时日志文件:
$ tail -f your-bunyan-logfile | livesort
祝你好运!-Darrin