目标:我希望我的应用程序代码将不漂亮的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",
暂无答案!
目前还没有任何答案,快来回答吧!