java - Logback Java 中带有模式的 JSON 布局
问题描述
我正在使用 logback 登录我的 Spring Boot 应用程序并使用以下模式:
"%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 链接:
推荐阅读
- reactjs - firebase deploy 提供欢迎屏幕
- ios - 如何在 ios 中为 nativescript 应用程序调试构建失败?
- python - 如何使用 beautifulsoup 从链接中获取文本和 URL
- java - Selenium JavascriptExecutor - javascript算法中的意外令牌
- c# - C# - 删除表情符号的 unicode 正则表达式也会删除另一个字符
- angular - SESSIONID 未存储在以 Angular 6 作为前端、Spring Boot 作为后端的应用程序中的 Cookie 中
- powershell - 如何在 powershell 脚本中编写 ctx.Load?
- javascript - 苗条读取嵌套存储
- python - cPanel 中的 Cronjob 找不到 BeautifulSoup4 模块
- javascript - 如何正确制作垂直可滚动区域