簡體   English   中英

用於漂亮打印 JSON 的 logback 格式化程序

[英]logback formatter for Pretty-print JSON

目標:我希望我的應用程序代碼將不漂亮的 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",

以下配置對我有用。

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

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