javascript - 如何将 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 上有一个相关问题。
解决方案
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,因为其中包含您需要注意的重要信息。
推荐阅读
- unit-testing - 我如何应用单元测试来检查 golang 的闰年?
- python - Python舍入类似于excel舍入公式
- shopify - 如何从单个 CTA 创建 CTA 的桌面和移动版本?
- c++ - 在 C++ 中使用 C 结构的 malloc
- node.js - 'reactions.resolve' 在计时器结束后返回 undefined | 不和谐.js v13
- javascript - elementui popover B嵌套在另一个popover A内,当我的鼠标进入B时,A消失
- amazon-mws - 亚马逊产品 API - 使用 API 搜索来自亚马逊的所有产品
- javascript - 带有来自 sql 数据库的数据的 chart.js 无法正常工作
- php - 不必要的局部变量 - 编写冗余变量更清晰的好习惯?
- javascript - 如何从 JavaScript 获取变量到 ColdFusion