【问题标题】:logback formatter for Pretty-print JSON漂亮打印 JSON 的 logback 格式化程序
【发布时间】:2021-09-19 00:47:21
【问题描述】:

目标:我希望我的应用程序代码将非漂亮的 json 记录为字符串。需要将其作为 Splunk 的一项活动。但是,在本地登录时,如果需要,使用不同的 logback.xml,我希望它可以漂亮地打印。

尝试了以下方法: 我试过logstashJacksonJsonFormatter。两者似乎都没有做漂亮的印刷品。以下是配置和示例输出:

          <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>
            &lt;!&ndash;<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>&ndash;&gt;
        </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


    【解决方案1】:

    以下配置对我有用。

    <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>
    

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 2014-05-19
      • 1970-01-01
      • 2016-02-25
      • 2012-03-07
      相关资源
      最近更新 更多