Logback 为日志配置颜色搭配(彩色搭配日志-搭配方案)
Logback 为日志配置颜色搭配(彩色搭配日志-搭配方案)
截图:
配置方法:
(1)大家都知道 appender > encoder > pattern 是格式化日志输出,这里也是可以自己配置颜色的
(2)配置方式在变量的外面用 %red() 包围
(3)例如:我这里使用一个变量
<property name="CONSOLE_LOG_PATTERN"
value="%red(%date{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %red([%thread]) %boldMagenta(%logger{50}) %cyan(%msg%n)"/>
(4)在 appender > encoder > pattern 中使用变量配置
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder class为空时, 默认也为 ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
我的配置方案
我这里使用了变量
<?xml version="1.0" encoding="UTF-8"?>
<!--详细介绍使用:https://icode.blog.****.net/article/details/88874162-->
<!--debug="true" : 打印 logback 内部状态(默认当 logback 运行出错时才会打印内部状态 ), 配置该属性后打印条件如下(同时满足):
1、找到配置文件 2、配置文件是一个格式正确的xml文件 也可编程实现打印内部状态, 例如: LoggerContext lc = (LoggerContext)
LoggerFactory.getILoggerFactory(); StatusPrinter.print(lc); -->
<!-- scan="true" : 自动扫描该配置文件,若有修改则重新加载该配置文件 -->
<!-- scanPeriod="30 seconds" : 配置自动扫面时间间隔(单位可以是:milliseconds, seconds, minutes
or hours,默认为:milliseconds), 默认为1分钟,scan="true"时该配置才会生效 -->
<configuration debug="true" scan="true" scanPeriod="30 seconds" packagingData="true">
<!-- 设置变量。定义变量后,可以使“${}”来使用变量。 -->
<property name="LOG_FILE_LOCATION" value="./log-file" />
<property name="CONSOLE_LOG_PATTERN"
value="%red(%date{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %red([%thread]) %boldMagenta(%logger{50}) %cyan(%msg%n)"/>
<!-- 设置 logger context 名称,一旦设置不可改变,默认为default -->
<contextName>myAppName</contextName>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder class为空时, 默认也为 ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前活动日志文件名:用日期命名 -->
<file>${LOG_FILE_LOCATION}/MyLog%d{yyyy-MM-dd}.log</file>
<!-- 文件滚动策略根据%d{patter}中的“patter”而定,此处为每天产生一个文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档文件名“.zip或.gz结尾”,表示归档文件自动压缩 -->
<FileNamePattern>${LOG_FILE_LOCATION}/MyLog%d{yyyy-MM-dd}.log.zip</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 日志级别若没显示定义,则继承最近的父 logger(该logger需显示定义level,直到rootLogger)的日志级别-->
<!-- logger 的 appender 默认具有累加性(默认日志输出到当前logger的appender和所有祖先logger的appender中),可通过配置 “additivity”属性修改默认行为-->
<!--name: 用来指定受此 logger 约束的某一个包或者具体的某一个类-->
<logger name="com.xpwi" level="debug" additivity="false" >
<appender-ref ref="FILE"/>
</logger>
<!-- 至多只能配置一个root -->
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>