log4j2.0以后我们通常需要在log4j2.xml中配置相关参数,在配置的时候我们就需要理解配置文件中参数的作用,以下为个人总结经验,如有错漏之处,敬请指正_(:з」∠)_
<?xml version="1.0" encoding="UTF-8"?> <!-- status关闭log4j2自身的日志输出 -->
<configuration status="OFF"> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO
> DEBUG > TRACE > ALL --> <!--变量配置--> <Properties> <!-- 格式化输出: %date表示日期,
%thread表示线程名, %-5level:级别从左显示5个字符宽度 %msg:日志消息, %n是换行符--> <!-- %logger{36} 表示
Logger 名字最长36个字符 --> <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS}
[%thread] %-5level %logger{36} - %msg%n" /> <!-- 定义日志存储的路径,不要配置相对路径 -->
<property name="FILE_PATH" value="D:\XXX" /> <property name="FILE_NAME"
value="文件名" /> </Properties> <!-- 定义输出器 --> <appenders> <console name="Console"
target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="${LOG_PATTERN}"/>
<!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter
level="info" onMatch="ACCEPT" onMismatch="DENY"/> </console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用--> <File name="Filelog"
fileName="${FILE_PATH}/test.log" append="false"> <PatternLayout
pattern="${LOG_PATTERN}"/> </File> <!--
这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log"
filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter
level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout
pattern="${LOG_PATTERN}"/> <Policies> <!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/> <SizeBasedTriggeringPolicy
size="10MB"/> </Policies> <!--
DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--> <DefaultRolloverStrategy
max="15"/> </RollingFile> <!--
这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log"
filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter
level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout
pattern="${LOG_PATTERN}"/> <Policies> <!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/> <SizeBasedTriggeringPolicy
size="10MB"/> </Policies> <!--
DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--> <DefaultRolloverStrategy
max="15"/> </RollingFile> <!--
这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log"
filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter
level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout
pattern="${LOG_PATTERN}"/> <Policies> <!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/> <SizeBasedTriggeringPolicy
size="10MB"/> </Policies> <!--
DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--> <DefaultRolloverStrategy
max="15"/> </RollingFile> </appenders>
<!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
<!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效--> <loggers> <root
level="info"> <appender-ref ref="Console"/> <appender-ref ref="Filelog"/>
<appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/> </root> <!-- 第三方日志系统 -->
<!--过滤掉spring和mybatis的一些无用的DEBUG信息,也可以在spring boot
的logging.level.org.springframework=FATAL设置--> <logger
name="org.springframework" level="INFO"></logger> <logger name="org.mybatis"
level="INFO"></logger> <logger name="org.apache.http" level="warn" />
</loggers> </configuration>