【问题标题】:How do I redirect STDOUT to .json for logs in NodeJS如何将 STDOUT 重定向到 .json 以获取 NodeJS 中的日志
【发布时间】:2019-12-10 09:26:25
【问题描述】:

我的日志需要采用.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 问题。

【问题讨论】:

    标签: javascript node.js winston log4js-node


    【解决方案1】:

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

    您可以通过点击process.stdout.on(`data`, data => ...)(和 stderr 等价物)来添加自己的日志写入,或者您可以将pipe their output 添加到文件中,或者(因为为什么要重新发明轮子?)您可以找到一个日志解决方案来为你,但是那是你要找到的,请其他人推荐你一个是 Stackoverflow 上的off topic

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

    【讨论】:

      【解决方案2】:

      winston 的example 基本解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2017-03-08
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-11
        • 2021-08-19
        • 1970-01-01
        相关资源
        最近更新 更多