NestJS中的HTTP Pino记录器和弹性公共模式(ecs)格式



我正在尝试将@elastic/ecs-pino-format应用于nestjs-pino。在良好的巢下-pino使用http-pino。我注意到http-pino[Symbol(pino.chindings)]内添加了请求对象,我假设它正在使用子日志记录器。因此,我试图编写一个自定义格式化程序,通过调用obj.res.log.bindings()并将http.request弹性通用模式(ecs)兼容来提取请求。。我面临的问题是,现在我的日志包含重复的reqhttp.request,无法找到一种方法来删除它。不确定我是否在寻找错误的方向,但我发现了很多问题,试图使nestjs-pino打印弹性通用模式(ecs)日志格式。此外,我还注意到@elastic/ecs-pino格式无法处理fasttify的问题。有人遇到过类似的问题吗?

所以我对pinopino-http以及它们如何集成在nestjs-pino感到困惑。从表面上看,@elastic/ecs-pino-format并不能处理Elastic Common Schema (ecs)的所有细节。在pino-http。所以我最终做的是在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选项的更多信息。

希望这有助于任何人面临同样的问题或想要nestjs与弹性通用模式(ecs)日志。

传递给http-pino的示例配置,用于具有ECS格式。

最新更新