如何将STDOUT重定向到.json以获取NodeJS中的日志

时间:2019-08-01 18:14:27

标签: javascript node.js winston log4js-node

我需要以.json格式保存日志,当前使用express-js服务器,并且日志显示如下:

Error: Cannot return null for non-nullable field Query.get_bar.
Error: Cannot return null for non-nullable field Query.get_bar.
Error: Cannot return null for non-nullable field Query.get_foo.

我发现有一些记录器框架(log4js,winstonjs),但我不想手动登录(即console.log(123)),我对重定向STDOUT并将其转换为JSON和写入某些.log文件。

此任务最简单的解决方案是什么?

更新:GitHub上有一个related问题。

2 个答案:

答案 0 :(得分:1)

process.stdoutprocess.stderr管道与使用Node运行的任何实际代码无关,因此,如果要将它们的输出发送到文件,则使主入口点脚本捕获stdout / stderr输出,这只是只要Node.js运行该脚本就可以执行。

您可以通过点击process.stdout.on(`data`, data => ...)(和stderr等效项)来添加自己编写日志,或者可以pipe their output到文件,或者(因为为什么要重新发明轮子?),您可以找到日志记录解决方案为您完成了此任务,但随后找到了位于您身上的,并要求其他人推荐您的是off topic在Stackoverflow上。

还请注意,stdout / stderr有一些同步/异步怪癖,因此请https://nodejs.org/api/process.html#process_a_note_on_process_i_o阅读,因为其中有一些重要的信息需要您注意。

答案 1 :(得分:0)

温斯顿的example基本上解决了这个问题。