如何在Logback中为不同日志级别配置自定义颜色?
问题解决:Logback自定义日志颜色不生效&文件日志颜色异常
一、自定义控制台日志颜色不生效的修复
你当前的配置问题在于**<highlight>标签的位置和配置方式错误**,Logback的默认%highlight转换器不会读取你放在encoder内的<highlight>配置,所以一直沿用默认配色。正确配置步骤如下:
- 注册自定义高亮转换器
在配置文件开头添加<conversionRule>,把自定义高亮规则绑定到一个新的转换词(比如highlightCustom):
<configuration> <!-- 注册自定义高亮转换器 --> <conversionRule conversionWord="highlightCustom" converterClass="ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter" />
- 配置控制台Appender的自定义颜色
将<highlightCustom>标签放在ConsoleAppender下、与encoder同级的位置,同时修改pattern里的高亮转换词为你注册的highlightCustom:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{yyyy-MM-dd HH:mm:ss} %highlightCustom(%-5level) %cyan(%logger{15}) - %msg %n </pattern> </encoder> <!-- 自定义颜色映射,与注册的转换词同名 --> <highlightCustom> <color>TRACE=WHITE</color> <color>DEBUG=GREEN</color> <color>INFO=GREEN</color> <color>WARN=YELLOW</color> <color>ERROR=RED</color> </highlightCustom> </appender>
- 保留原有logger和root配置
你的logger和root配置无需修改,直接保留即可:
<logger name="at.qe.backend.api.services.AuthService" additivity="false" level="info"> <appender-ref ref="FILE1" /> </logger> <root level="DEBUG"> <appender-ref ref="CONSOLE" /> </root> </configuration>
配置完成后,控制台日志就会按照你定义的颜色显示。
二、文件日志使用颜色插件异常的原因
你提到的第三方项目仅支持控制台日志,文件日志绝对不能使用任何颜色相关的转换器(包括%highlight、%cyan这类)。因为日志颜色是通过ANSI转义字符实现的,这类字符写入文件后,普通文本编辑器会直接显示转义代码(比如[32m),就会出现你看到的异常乱码。
解决办法:
文件Appender的pattern里要移除所有颜色相关语法,只保留纯文本格式,示例:
<appender name="FILE1" class="ch.qos.logback.core.FileAppender"> <file>logs/app.log</file> <encoder> <!-- 纯文本格式,无任何颜色转换 --> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{15} - %msg%n</pattern> </encoder> </appender>
内容的提问来源于stack exchange,提问作者dubble_g
相关产品推荐
相关产品推荐

