Java 以JSON格式发送日志消息

Java 以JSON格式发送日志消息,java,spring,logging,slf4j,zipkin,Java,Spring,Logging,Slf4j,Zipkin,我正在一个项目中使用SpringBoot,目前正在探索日志记录行为。为此,我正在使用zipkin服务 我已使用适当的logback.xml将日志导出到json文件: {"@timestamp":"2018-07-12T17:53:44.613+05:30","@version":"1","message":"in meth3","logger_name":"com.example.demo.Controller.Controller","thread_name":"http-nio-8089-e

我正在一个项目中使用SpringBoot,目前正在探索日志记录行为。为此,我正在使用zipkin服务

我已使用适当的logback.xml将日志导出到json文件:

{"@timestamp":"2018-07-12T17:53:44.613+05:30","@version":"1","message":"in meth3","logger_name":"com.example.demo.Controller.Controller","thread_name":"http-nio-8089-exec-3","level":"INFO","level_value":20000,"traceId":"62bcfafad3a37a09","spanId":"62bcfafad3a37a09","spanExportable":"true","X-Span-Export":"true","X-B3-SpanId":"62bcfafad3a37a09","X-B3-TraceId":"62bcfafad3a37a09","caller_class_name":"com.example.demo.Controller.Controller","caller_method_name":"meth3","caller_file_name":"Controller.java","caller_line_number":43,"appname":"pom.artifactId_IS_UNDEFINED","version":"pom.version_IS_UNDEFINED"}
是否有一种方法可以在日志的消息部分插入jsonObject。比如:

logger.info(<some_json_object>)
logger.info()

我试过广泛地寻找一种方法,但没有结果。甚至可能吗?

slf4j API只将
字符串
作为
信息
调试
警告
错误
消息的输入

您可以做的是创建自己的JsonLogger包装器,它需要一个普通的
记录器
(可能会环绕它),您可以将其包含在类的顶部,如:

private static final JsonLogger logger=new JsonLogger(LoggerFactory.getLogger(MyClass.class))

然后,您可以在JsonLogger中使用Jackson、GSON或您最喜欢的JSON映射器对象,这样您就可以随心所欲了。然后,它可以像普通记录器一样提供
信息
调试
警告
错误
方法


您还可以创建自己的
JsonLoggerFactory
,它为您封装了这些内容,以便每个类中包含的行更加简洁。

Zipkin是一个跟踪采集器。它与日志无关,只是客户端检测库可以选择在日志消息中打印跟踪信息。