Apache Log4j 2 是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并参考了Logback中优秀的设计,同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架;企业中通常使用SLF4j门面+Log4j2来记录日志
一、pom.xml配置
<dependency>
<groupId>com.plumelog</groupId>
<artifactId>plumelog-log4j2</artifactId>
</dependency>
二、log4j2配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="60" strict="true">
<properties>
<property name="logback.file.path" value="/app/logs"/>
<property name="charset">UTF-8</property>
<Property name="date_pattern">yyyy-MM-dd HH:mm:ss,SSS</Property>
<property name="pattern">%d{${date_pattern}} %clr{[%-5level]} %clr{[${sys:applicationName}]}{yellow} %clr{[%X{requestId}]}{magenta} %clr{[%thread]}{blue} [%clr{%C{1}#%M:%L}{red}] - %m%n%exception</property>
<property name="maxSize">100MB</property><!-- 超出100M生成新的文件 -->
<property name="maxCount">7</property><!-- 超出7个文件删除,每天生成一个日志文件,也就是最多保留7天 -->
</properties>
<appenders>
<!--console :控制台输出的配置 -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}" charset="${charset}" />
</Console>
<RollingRandomAccessFile name="rollingFile" immediateFlush="true" fileName="${logback.file.path}/sout.log"
filePattern="${logback.file.path}/sout.%d{yyyy-MM-dd}-%i.gz" ignoreExceptions="false">
<PatternLayout pattern="${pattern}" charset="${charset}" />
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
<SizeBasedTriggeringPolicy size="${maxSize}" />
</Policies>
<!-- 超出数量就删除备份,防止日志文件太大 -->
<DefaultRolloverStrategy max="${maxCount}" />
</RollingRandomAccessFile>
</appenders>
<loggers>
<!--全异步输出info级以上的日志信息-->
<asyncRoot level="INFO" includeLocation="true" additivity="false">
<!-- 本地开发打开控制台输出,服务器上可以关闭 -->
<AppenderRef ref="console" />
<AppenderRef ref="rollingFile" />
</asyncRoot>
</loggers>
</configuration>