【发布时间】:2021-09-19 00:47:21
【问题描述】:
目标:我希望我的应用程序代码将非漂亮的 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",
【问题讨论】:
标签: java logging logback slf4j circe