java - Logback Java 中带有模式的 JSON 布局

标签 java logback logback-classic

我正在使用 logback 登录我的 spring 启动应用程序并使用模式:

"%d [%thread] %-5p [%c] [%F:%L] [trace=%X{X-B3-TraceId:-},span=%X{X-B3-SpanId:-}]  - %msg%n"
现在我想为我的日志移动到 JSON 布局。但是我没有看到将模式应用于我的日志的方法,因为上面的许多信息都丢失了。
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
                <timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId>
                <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
                    <prettyPrint>true</prettyPrint>
                </jsonFormatter>
            </layout>
    </appender>
任何替代方法来实现相同的目标?

最佳答案

实现 JsonLayout 后我遇到了同样的问题在我的 logback-spring.xml我意识到我不能放入自己的自定义模式。
在谷歌搜索了很多并浪费了几个小时之后,我遇到了另一种 logAppender,它允许模式并以 Json 格式打印日志。
您需要使用 net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder编码器而不是 JsonLayout示例实现可以如下所示:

<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
   <providers>
     <timestamp>
       <fieldName>timestamp</fieldName>
        <pattern>yyyy-MM-dd' 'HH:mm:ss.SSS</pattern>
     </timestamp>
     <pattern> your desired pattern </pattern>
   </providers>
</encoder>
编辑:
有关详细文档,您还可以查看此 github link:

关于java - Logback Java 中带有模式的 JSON 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63841905/

相关文章:

java - logback中不同日志级别的不同日志文件

java - Spring Cloud 配置服务器-登录错误

java - Spring Boot logback.xml 创建 .tmp 文件

java - logback.groovy 在 1.2.9+ 中被丢弃是否有原因?

Logback 1.1.11 totalSizeCap 不起作用

java - Logback 无法正确清理文件

java - Grails 导入 groovy http 构建器

java - 如果连接器端口为 8081,如何从 apache tomcat 中的 URL 中删除端口号

java - 如果元素的键重复但值必须附加到 java 中的单个键,如何从列表中删除该元素?

java - 如何为swing应用程序设置图标图像?