【问题标题】:HTTP Pino logger and Elastic Common Schema (ecs) format in NestJSNestJS 中的 HTTP Pino 记录器和 Elastic Common Schema (ecs) 格式
【发布时间】:2021-12-10 22:48:33
【问题描述】:

我正在尝试将@elastic/ecs-pino-format 应用于nestjs-pino。下好的nestjs-pino 使用的是http-pino。我注意到http-pino[Symbol(pino.chindings)] 中添加了请求对象,我假设它使用的是子记录器。所以我尝试编写一个自定义格式化程序来通过调用obj.res.log.bindings() 来提取req 并将http.request 设置为符合 Elastic Common Schema (ecs)。我现在面临的问题是我的日志包含重复的 reqhttp.request 并且找不到删除它的方法。不确定我是否在寻找错误的方向,但我发现很多问题试图让 nestjs-pino 打印 Elastic Common Schema (ecs) 格式日志。我还注意到@elastic/ecs-pino-format 无法处理 fastify 的问题。有没有人遇到过类似的问题?

【问题讨论】:

    标签: node.js nestjs elk pinojs elastic-common-schema


    【解决方案1】:

    所以我对pinopino-http 以及它们如何集成到nesjs-pino 感到困惑。从外观上看,@elastic/ecs-pino-format 并没有处理pino-httpElastic Common Schema (ecs) 的所有细节。所以我最终做的是将nestjs-pino 作为配置传入@elastic/ecs-pino-format 的格式对象的合并并配置pino-http

    pino-http支持传递

    customAttributeKeys: {
    req: 'http.request',
    res: 'http.response',
    }
    

    用于更改reqres 的键。至于reqres 包含的数据,http-pino 有另一种转换方式

    serializers: {
    req: (log) => {... return transform },
    res: (log) => {... return transform },
    } 
    

    有关pino HTTP options的更多信息。

    希望这可以帮助任何面临同样问题或希望使用 Elastic Common Schema (ecs) 日志的 Nestjs。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 2017-09-16
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多