使用JSON记录Quarkus中的其他字段



我目前正试图将Quarkus中的日志格式从String更改为JSON,并添加一些对我们在elastic/kibana中的监控和数据分析很重要的附加字段。

到目前为止,我已经在官方文档中添加了这个依赖项

<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-logging-json</artifactId>
</dependency>

https://quarkus.io/guides/logging

这将日志格式从普通的String更改为完整的JSON格式。

例如:

{"timestamp":"2022-09-05T13:30:09.314+01:00","sequence":24441,"loggerClassName":"org.jboss.logging.Logger","loggerName":"org.com.Controller","level":"INFO","message":"Test","threadName":"executor-thread-0","threadId":354,"mdc":{},"ndc":"","hostName":"hostname","processName":"test.jar","processId":9552}

我的问题是,如何向日志输出中添加额外的字段,例如,我需要添加一个名为"pattern"的额外json字段,每次都从代码中提取一个值。最后的json输出如下:

{"timestamp":"2022-09-05T13:30:09.314+01:00","sequence":24441,"loggerClassName":"org.jboss.logging.Logger","loggerName":"org.com.Controller","level":"INFO","message":"Test","threadName":"executor-thread-0","threadId":354,"mdc":{},"ndc":"","hostName":"hostname","processName":"test.jar","processId":9552, "pattern" :"test-pattern"}

我尝试了文档中指定的以下内容:

quarkus.log.file.json.additional-field.pattern.value=test-value
quarkus.log.file.json.additional-field.pattern.type=string

但这并没有显示任何内容,我也不确定如何以编程方式使用它,

示例配置

quarkus.log.console.json.additional-field."EXTRA".value=test-value
quarkus.log.console.json.additional-field."EXTRA".type=string
quarkus.log.file.json.additional-field."EXTRA".pattern.value=test-value
quarkus.log.file.json.additional-field."EXTRA".pattern.type=string

应该有双引号。和示例输出

{"timestamp":"2022-09-18T14:37:37.687+01:00","sequence":1548,"loggerClassName":"org.jboss.logging.Logger","loggerName":"org.acme.GreetingResource","level":"INFO","message":"Hello","threadName":"executor-thread-0","threadId":101,"mdc":{},"ndc":"","hostName":"mintozzy-mach-wx9","processName":"code-with-quarkus-dev.jar","processId":133458,"EXTRA":"test-value"}

对于完整的工作示例,请检查

您可以使用他们的JsonProvider使用quarkiverse日志json扩展来解决您的问题

https://github.com/quarkiverse/quarkus-logging-json

quarkiverse日志json扩展比标准的quarkus日志json包更灵活/可扩展,因为您可以通过编程向json日志中添加字段,而不是在硬编码配置中

最新更新