我正在尝试将@elastic/ecs-pino-format应用于nestjs-pino。在良好的巢下-pino使用http-pino
。我注意到http-pino
在[Symbol(pino.chindings)]
内添加了请求对象,我假设它正在使用子日志记录器。因此,我试图编写一个自定义格式化程序,通过调用obj.res.log.bindings()
并将http.request
与弹性通用模式(ecs)兼容来提取请求。。我面临的问题是,现在我的日志包含重复的req
和http.request
,无法找到一种方法来删除它。不确定我是否在寻找错误的方向,但我发现了很多问题,试图使nestjs-pino打印弹性通用模式(ecs)日志格式。此外,我还注意到@elastic/ecs-pino格式无法处理fasttify的问题。有人遇到过类似的问题吗?
所以我对pino
和pino-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',
}
表示修改req
和res
的键值。对于req
和res
所包含的数据,http-pino
有另一个转换它们的选项
serializers: {
req: (log) => {... return transform },
res: (log) => {... return transform },
}
有关pino HTTP选项的更多信息。
希望这有助于任何人面临同样的问题或想要nestjs与弹性通用模式(ecs)日志。
传递给http-pino
的示例配置,用于具有ECS格式。