log4j2
配置文件
log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="info">
-- 配置了一些键值对,简单理解为变量,以及变量值
<Properties>
<Property name="project_name">log4j2_test</Property>
<Property name="log_pattern">/tmp/log/test-i%-%d{yyyy-MM-dd HH}.log</Property>
<Property name="test">/tmp/log/test.log</Property>
<Property name="log_content_pattern">%d %p %c{1.} [%t] %m%n</Property>
</Properties>
<Appenders>
<Console name="stdout"> -- 控制台的输出,name简单理解为唯一标识
<PatternLayout pattern="${log_content_pattern}"/>。-- 日志文件的内容的格式
</Console>
-- name中指定的是该文件的唯一标识,fileName指定的是该文件的全路径(包括文件
名称),filePattern指定的是,当该日志文件触发策略,生成滚动日志文件时候,按
照这种命名方式(全路径名称)来对已经归档的历史文件进行重新命名
<RollingFile name="testFile" fileName="${test}" filePattern="${log_pattern}">
-- 控制输出什么级别的日志
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${log_content_pattern}"/> -- 日志文件的内容的格式
-- 配置生成滚动日志的条件(什么情况下生成滚动日志?)
<Policies>
-- 每天一个文件。生成滚动日志不仅仅只有这一种策略,有很多种,用到的时
候,可以百度查
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
</Policies>
-- 跟log_pattern中的变量i%相关,如果i%为100,则在生成第101文件时,会将第
二个文件命名为1,并把即将生成的第101个文件,修改为100;把第一个文件删除
掉,可以简单理解为滚动日志的最大个数(生成滚动日志后应该如何处理?)
<DefaultRolloverStrategy max="100"/>
</RollingFile>
</Appenders>
<Loggers>
-- 表示,这个包(com.xyl.test)下面所有info级别以及其他高级别的日志都会被输出到日
志文件testFile中,也会被输出到控制台
<AsyncLogger name="com.xyl.test" level="INFO" additivity="false">
<AppenderRef ref="testFile"/> -- 指定日志打印到testFile(/tmp/log/test.log)中
<AppenderRef ref="stdout"/> -- 指定日志打印到控制台
</AsyncLogger>
<AsyncRoot level="ERROR">
<AppenderRef ref="testFile"/>
</AsyncRoot>
</Loggers>
</Configuration>
注意:配置了 AsyncLogger、AsyncRoot 但是level不一样,因为AsyncLogger 配置的具体的包 范围 比 AsyncRoot小,所以日志打印时生效的范围是 以AsyncLogger 配置的为准,如果AsyncLogger 没有配置,则会以AsyncRoot 为准
参考:
日志介绍:https://blog.csdn.net/lilizhou2008/article/details/111503085
log4j.xml配置文件中的RollingFile:https://zhuanlan.zhihu.com/p/462316038