簡體   English   中英

以JSON格式發送日志消息

[英]Send log messages as JSON

我在一個項目中使用spring boot,目前正在探索日志記錄行為。 為此,我正在使用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>)

我嘗試了廣泛的搜索方式,但無濟於事。 可能嗎

slf4j API僅將String作為infodebugwarnerror消息的輸入。

您可以做的是創建自己的JsonLogger包裝器,該包裝器需要一個普通的Logger (可能是環繞式包裝Logger ),您可以將其包括在類的頂部,例如:

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

然后,您可以在JsonLogger中對JSON映射器使用Jackson,GSON或您喜歡的對象,以便您可以執行所需的操作。 然后,它可以像常規記錄器一樣提供infodebugwarnerror方法。

您還可以創建自己的JsonLoggerFactory ,為您封裝它,以便每個類中包含的行更加簡潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM