java - 如何使用Logback以JSON方式登录?

标签 java spring logback slf4j

我是 SLF4J 和 Logback 的新手,我正在尝试记录以下 API 的每个请求和响应 link 。这是配置

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%requestURL | status code: %statusCode | bytes: %bytesSent | elapsed time: %elapsedTime | request-log: %magenta(%requestContent) | response-log: %cyan(%responseContent)</pattern>
        </encoder>
    </appender>
    <appender-ref ref="STDOUT"/>
</configuration>

目前正在打印:

GET /api/request HTTP/1.1 | status code: 200 | bytes: 599 | elapsed time: 2630 | request-log:  | response-log {"key1":"field1","key2":"field2"}

我想记录类似的内容:

{
    "url": "GET /api/request HTTP/1.1",
    "status": 200,
    "elapsed_time": 2630 ,
    "response": {
        "key1":"value1",
        "key2":"value2"
    }
}

最佳答案

这会起作用:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <jsonFactoryDecorator class="JsonLogDecorator"/>
        <fieldNames>
            <timestamp>timeStamp</timestamp>
            <message>message</message>
            <logger>logger</logger>
            <thread>thread</thread>
            <level>level</level>
            <levelValue>[ignore]</levelValue>
            <version>[ignore]</version>
            <stackTrace>stackTrace</stackTrace>
        </fieldNames>
        <includeMdcKeyName>mdcKeyToInclude</includeMdcKeyName>
    </encoder>
</appender>

JsonLogDecorator 是实现 JsonFactoryDe​​corator 的自定义类。

关于java - 如何使用Logback以JSON方式登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57424249/

相关文章:

asp.net - 如何在spring集成中设置REQUEST HEADER

java - compareAndSet 如何在 Redis 内部工作

java - 有什么理由在 LogBack Logger 上使用 private 而不是 private final static?

log4j - 如何将 log4j.xml 转换为 logback.xml?

java - 覆盖 Logback 错误输出

java - java Controller 中无法正确识别特殊/重音字符?

java - 为什么在 Eclipse 中和从命令行运行 Java 程序时 ThreadPoolExecutor 的行为不同?

java - 使用 Java 8 按属性对自定义对象列表进行分组

java - 通过DER算法解码Java中的证书

java - 将适配器应用于 Spinner 会导致 NullPointerException?