首页 > 解决方案 > 如何将 STDOUT 重定向到 .json 以获取 NodeJS 中的日志

问题描述

我需要有.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 上有一个相关问题。

标签: javascriptnode.jswinstonlog4js-node

解决方案


process.stdout和管道独立于您使用 Node 运行的process.stderr任何实际代码,因此,如果您希望将它们的输出发送到文件,那么让您的主入口点脚本捕获 stdout/stderr 输出,这就是它会做的只要Node.js 运行该脚本。

您可以通过点击process.stdout.on(`data`, data => ...)(和 stderr 等效项)添加自己的日志写入,或者您可以将它们的输出通过管道传输到文件,或者(因为为什么要重新发明轮子?)您可以找到一个为您执行此操作的日志记录解决方案,但那就是你去寻找,让别人推荐你一个在 Stackoverflow 上是题外话。

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


推荐阅读