elasticsearch 如何将Pino传输与格式化程序结合起来?

idv4meu8  于 2023-03-01  发布在  ElasticSearch
关注(0)|答案(1)|浏览(152)

我尝试通过Pino传递日志,用ecs格式化程序格式化日志,然后将其发送到tcp传输器,但是我不知道如何将这两个功能结合起来。
在ecs格式器文档(here)中,它显示了在初始化时将格式器作为第一个参数传递给Pino,如下所示:

const log = pino(ecsFormat())

但在TCP传输器中,它还显示将传输传递到Pino初始化作为第一个参数!(docs here

const log = pino(transport)

但是那些功能并不是相互排斥的,我到底该如何格式化我的日志,然后再传输它们呢?

rdrgkggo

rdrgkggo1#

pino()函数接受optionsdestination参数,这两个参数都是可选的。
由于ecs-pino-format返回pinoconfig,并且您已经构造了传输,因此请指定这两个参数

const log = pino(ecsFormat(), transport)

我不认为ecs-pino-format是这种情况,但是如果pino配置碰巧已经指定了transport属性,则需要修改配置,因为它优先于第二个destination参数

const ecs_options = ecsFormat()
const pino_config = { 
  ...ecs_options,
  transport: {
     ...ecs_options.transport,
     my_override: 'whatever',
  }
}
const log = pino(pino_config)

相关问题