寻求替代ch.qos.logback.contrib的JSON日志库,实现Logback单行JSON输出
问题说明
- 现有Logback的Appender配置使用了
ch.qos.logback.contrib库的JsonLayout和JacksonJsonFormatter,但该库存在安全漏洞且已停止维护,需寻找替代方案 - 核心需求:实现单行JSON格式的日志输出Appender
- 此前尝试过Spring日志和
PatternLayout,但存在问题:异常信息无法被纳入JSON对象,会输出到JSON外部的新行中
原Appender配置
<appender name="RollingFileJSON" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/json/app.log</file> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <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> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每日滚动,且文件达到10MB时滚动 --> <fileNamePattern>logs/json/app-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender>
尝试过的PatternLayout配置
<layout class="ch.qos.logback.classic.PatternLayout"> <pattern>{"timestamp":"%d{yyyy-MM-dd'T'HH:mm:ss.SSSX}", "level":"%level", "logger":"%logger", "message":"%msg", "thread":"%thread"}%n</pattern> </layout>
内容的提问来源于stack exchange,提问作者pikachugb
相关产品推荐
相关产品推荐

