node.js - 将 JSON 记录到 DataDog 日志消息字段
问题描述
我希望能够将日志发送到 datadog 并使消息成为 JSON 对象而不是字符串。
除非创建了一个方面,否则元数据字段是不可搜索的,我想避免这样做。
我目前正在使用winston + winston-datadog-logs-transporter发送日志。
如果我这样做:logger.info(JSON.stringify(message))
,datadog 将消息记录为空白并将字符串化消息添加为元数据。
如果我这样做: logger.info('foo' + JSON.stringify(message)
,那么该消息将被解释为一个字符串,我可以对其进行搜索。
如果我这样做: logger.info('foo', message)
,则正文设置为foo
并被message
解释为元数据,如果不创建构面,我将无法搜索。
任何帮助表示赞赏,谢谢!
解决方案
这对我有用:
const { createLogger, format, transports } = require('winston')
const { combine, timestamp, json } = format
function dataDogLogger(options)
{
const logger = createLogger({
exitOnError: false,
format: combine(
// add a timestamp to all logs
timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
json()
),
transports: [ ...whatever you need here... ]
})
return logger
}
module.exports = dataDogLogger
推荐阅读
- html - 两个小时在同一行,中间有空格
- c - c中strcpy函数的等价物,int main及一些解释
- javascript - 传递给没有逗号的函数的参数不会引发语法错误?
- c# - 如何将 Auto Mapper 直接注入到控制器下方的存储库层
- powershell - 从变量中删除“
- javascript - 在构造函数中存储更新时不调用反应;
- swift - Swift 正确使用协议扩展
- oracle - Pentaho - 使用 1 个输入参数和 Refcursor 输出(多个输出字段)调用具有多行的存储过程
- modelica - PyFMI/JModelica - 暂停模拟并从修改参数的状态重新启动
- android - 如何在 MotionLayout 中以编程方式设置过渡持续时间?