一、日志输出格式说明
-
yml配置输出级别及输出格式(没有xml配置时可以自行配置pattern规则):
logging:level:com.it.*: debugpattern:console: "%d{yyyy-MM-dd HH:mm:ss} %clr(%-5level) [%magenta(${spring.application.name})] --- %cyan(%-30.30logger{0}) : %m%n"
-
pattern语法说明:
%d{yyyy-MM-dd HH:mm:ss}
:日志输出时间的格式;%clr()
:日志输出字体颜色,日志级别不同,颜色也不同;%cyan()
:日志输出字体颜色为青色;%magenta()
:日志输出字体颜色为紫色(品红色);%t
或%thread
:线程名称;%-5level
:%-5
指占用五个字符,左对齐。level
指的是日志输出级别,分为TRACE
<DEBUG
<INFO
<WARN
<ERROR
<FATAL
;%-30.30
:总字符30个长度,超出截取,不够则空格补齐。点号前面加减号-
,表示从前面截断。点号后面加减号-
,表示从尾部截断;logger{0}
:执行的方法全类名,可以有一个整形参数,用于缩短日志记录器的包名。设置为0表示只输入logger最右边点符号之后的字符串;%m
或%msg
:日志输出的信息;%n
:末尾换行;
二、Log4j2的使用
-
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
-
排除默认的日志依赖 LogBack,主要是
spring-boot-starter-logging
:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions> </dependency>
-
配置文件yaml修改:
logging:config: classpath:log4j2.xml
-
添加XML配置文件
log4j2.xml
:<?xml version="1.0" encoding="UTF-8"?> <configuration status="error" monitorInterval="10"><properties><property name="LOG_HOME">./logs</property><property name="PATTERN_LAYOUT_CONSOLE">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p: --- [%15.15t] %-40.40logger{39} : %m%n</property><property name="PATTERN_LAYOUT_CONSOLE_ROOT">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%15.15t] %-40.40logger{39} : %m%n</property><property name="PATTERN_LAYOUT">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%15.15t] %-40.40logger{39} : %m%n</property><property name="SYSTEM_LEVEL">info</property></properties><appenders><Console name="Console" target="SYSTEM_OUT"><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout charset="utf-8"><MarkerPatternSelector defaultPattern="${PATTERN_LAYOUT_CONSOLE_ROOT}"><PatternMatch key="UTIL" pattern="${PATTERN_LAYOUT_CONSOLE}"/></MarkerPatternSelector></PatternLayout></Console><RollingFile name="RollingFileSystem" fileName="${LOG_HOME}/system.log"filePattern="${LOG_HOME}/$${date:yyyy-MM}/$${date:yyyy-MM-dd}/system/system-%d{yyyy-MM-dd}-%i.log.gz"bufferSize="4096" immediateFlush="true" bufferedIO="true" append="true"><Filters><MarkerFilter marker="MESSAGE" onMatch="DENY" onMismatch="NEUTRAL"/><MarkerFilter marker="TRACE" onMatch="DENY" onMismatch="NEUTRAL"/><ThresholdFilter level="${SYSTEM_LEVEL}" onMatch="ACCEPT" onMismatch="DENY"/></Filters><PatternLayout charset="utf-8"><MarkerPatternSelector defaultPattern="${PATTERN_LAYOUT_CONSOLE_ROOT}"><PatternMatch key="UTIL" pattern="${PATTERN_LAYOUT}"/></MarkerPatternSelector></PatternLayout><Policies><CronTriggeringPolicy schedule="0 0 0 * * ?"/><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100MB"/></Policies><DefaultRolloverStrategy max="50"><Delete basePath="${LOG_HOME}" testMode="false" maxDepth="5"><IfFileName glob="*/*/system/system*.log.gz"><IfLastModified age="30d"><IfAny><IfAccumulatedFileSize exceeds="5GB"/><IfAccumulatedFileCount exceeds="1000"/></IfAny></IfLastModified></IfFileName></Delete></DefaultRolloverStrategy></RollingFile></appenders><loggers><root level="${SYSTEM_LEVEL}"><appender-ref ref="Console"/><appender-ref ref="RollingFileSystem"/></root><Logger name="com" level="${SYSTEM_LEVEL}" additivity="false"><appender-ref ref="RollingFileSystem"/></Logger><Logger name="com.it.mapper" level="DEBUG" additivity="false"><appender-ref ref="RollingFileSystem"/></Logger></loggers> </configuration>
三、XML配置标签说明:
- configuration:父标签,包裹所有元素;
- status:配置文件的日志检查级别,符合的时候会触发日志输出;
- monitorInterval:间隔时间,每隔一段时间检查一次配置文件是否更改;
- properties:用于声明变量,一般为声明日志存储位置,日志输出格式、日志级别等。
- appenders:声明日志输出方式、日志位置等;
- Console:控制台输出,
target
属性为设置输出方式,SYSTEM_OUT
或SYSTEM_ERR
,一般设置默认SYSTEM_OUT
;- PatternLayout:日志输出格式,引用自定义的properties变量即可;
- RollingFile:文件滚动记录日志,可以配置限制日志文件大小和保存策略;
- Filters:声明一组顺序执行的过滤器,依次执行,
ACCEPT
表示允许写入,DENY
表示拒绝写入,NEUTRAL
表示中立,即放行到下一个过滤器; - MarkerFilter:声明一个标记过滤器,根据日志的标记信息判断日志的写入;
- ThresholdFilter:声明一个阈值过滤器,根据日志级别进行判读写入;
- Policies:指定新建日志文件的时机,日志打包策略,如定时打包、存储大小等;
- DefaultRolloverStrategy:声明日志文件的删除策略;
- Filters:声明一组顺序执行的过滤器,依次执行,
- Console:控制台输出,
- loggers:声明日志使用哪些appender进行输出;
- root:设置项目根目录的日志输出方式,具体使用哪个
appender
; - logger:设置具体的包的日志,可以控制某些依赖的日志;
- root:设置项目根目录的日志输出方式,具体使用哪个