[英]logback formatter for Pretty-print JSON
目標:我希望我的應用程序代碼將不漂亮的 json 記錄為字符串。 這是將其作為 Splunk 的一個事件所必需的。 但是,在本地登錄時,如果需要,使用不同的 logback.xml,我希望它可以漂亮地打印。
嘗試了以下內容:我嘗試過logstash
和JacksonJsonFormatter
。 兩者似乎都沒有做漂亮的印刷品。 以下是配置和示例輸出:
<encoder class="net.logstash.logch.qos.logback.contrib.jsonback.encoder.LogstashEncoder">
<fieldNames>
<timestamp>[ignore]</timestamp>
<level>[ignore]</level>
<levelValue>[ignore]</levelValue>
<thread>[ignore]</thread>
<logger>[ignore]</logger>
<version>[ignore]</version>
<message/>
</fieldNames>
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
<!–<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
<includeContextName>false</includeContextName>
<appendLineSeparator>false</appendLineSeparator>
</layout>–>
</encoder>
------
Results:
{"message":"{\"interface\":\"dynamodb client\",\"action\":\"test dynamodb connection\",\"status\":\"ok\",\"table-status\":\"ACTIVE\"}"}
請求:有人可以建議更正我在這里所做的事情,或者是一個提供編碼器和格式化程序的好庫,可以在記錄之前漂亮地打印 JSON 字符串?
我有的代碼
代碼: logger.info(statusJsonStr);
logback.xml:
<encoder>
<pattern>%message%n</pattern>
</encoder>
控制台日志如下所示:
{"interface":"dynamodb client","action":"test dynamodb connection","status":"ok","table-status":"ACTIVE"}
類路徑中的庫
circe = "0.13.0" //for circe-core, circe-parser, circe-jawn
logbackClassic = "1.2.3" //for logback-classic & logback-core
"net.logstash.logback" % "logstash-logback-encoder" % "4.11",
"ch.qos.logback.contrib" % "logback-json-core" % "0.1.2",
"ch.qos.logback.contrib" % "logback-json-classic" % "0.1.2",
"ch.qos.logback.contrib" % "logback-jackson" % "0.1.2",
"com.fasterxml.jackson.core" % "jackson-core" % "2.5.2",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.5.2",
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.5.2",
以下配置對我有用。
<appender name="json" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter
class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
<timestampFormat>yyyy-MM-dd' 'HH:mm:ss.SSS</timestampFormat>
</layout>
</appender>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.