如何记录 JSON 到控制台并让 cloudwatch 日志获取正确的元数据?
How to log JSON to console and get cloudwatch logs pick up correct metadata?
winston.info('Hello again distributed logs', { app: 'test', sid: 1 })
pino.info('Hello again distributed logs', { app: 'test', sid: 1 })
输出:
{"app":"test","sid":1,"level":"info","message":"Hello again distributed logs","timestamp":"2017-02-16T03:34:06.186Z"}
{"pid":4269,"hostname":"Macchiato.local","level":30,"time":1487216046197,"msg":"Hello again distributed logs {\"app\":\"test\",\"sid\":1}","v":1}
我有 fluentd 守护进程来获取容器标准输出并将其发送到 cloudwatch。
在上面的示例中,cloudwatchlogs 可以从 pino 中正确检测到元数据,我将能够像这样查询日志
{$.app = "test"}
但是,winston 控制台不是那样工作的,所有内容都被推送到 log
属性。
有谁知道如何解决这个问题。我正在使用带有 json: true
和 stringify: true
的 winston 控制台
事实证明这不是 winston
的问题。
我使用 pm2
到 运行 节点,我需要将 --raw
arg 传递给它以获取原始日志。
winston.info('Hello again distributed logs', { app: 'test', sid: 1 })
pino.info('Hello again distributed logs', { app: 'test', sid: 1 })
输出:
{"app":"test","sid":1,"level":"info","message":"Hello again distributed logs","timestamp":"2017-02-16T03:34:06.186Z"}
{"pid":4269,"hostname":"Macchiato.local","level":30,"time":1487216046197,"msg":"Hello again distributed logs {\"app\":\"test\",\"sid\":1}","v":1}
我有 fluentd 守护进程来获取容器标准输出并将其发送到 cloudwatch。
在上面的示例中,cloudwatchlogs 可以从 pino 中正确检测到元数据,我将能够像这样查询日志
{$.app = "test"}
但是,winston 控制台不是那样工作的,所有内容都被推送到 log
属性。
有谁知道如何解决这个问题。我正在使用带有 json: true
和 stringify: true
事实证明这不是 winston
的问题。
我使用 pm2
到 运行 节点,我需要将 --raw
arg 传递给它以获取原始日志。