pom.xml
<!-- Web项目需添加 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.15.0</version>
</dependency>
<!--用于与slf4j保持桥接-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.15.0</version>
</dependency>
src\main\resources\log4j2.xml
<?xml version="1.0" encoding="UTF-8"?><configuration status="warn">
<Properties>
<Property name="infoLogFileDir">D:logs/emr_record/info</Property>
<Property name="infoLogFileName">info_log</Property>
<Property name="infoLogFileSrc">${infoLogFileDir}/${infoLogFileName}</Property>
<Property name="errorLogFileDir">D:logs/emr_record/error</Property>
<Property name="errorLogFileName">error_log</Property>
<Property name="errorLogFileSrc">${errorLogFileDir}/${errorLogFileName}</Property>
</Properties>
<appenders>
<RollingFile name="infoLogRollingFile" fileName="${infoLogFileSrc}"
filePattern="${infoLogFileSrc}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!--配置1天存储一个文件-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!--配置超过文件大小切割成多个文件%i区分序号,目前配一个文件20M-->
<SizeBasedTriggeringPolicy size="20MB"/>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="20">
<Delete basePath="${infoLogFileDir}/" maxDepth="1">
<IfFileName glob="*.log" />
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--保留30天-->
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<RollingFile name="errorLogRollingFile" fileName="${errorLogFileSrc}"
filePattern="${errorLogFileSrc}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!--配置1天存储一个文件-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!--配置超过文件大小切割成多个文件%i区分序号,目前配一个文件20M-->
<SizeBasedTriggeringPolicy size="20MB"/>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="20">
<Delete basePath="${errorLogFileDir}/" maxDepth="1">
<IfFileName glob="*.log" />
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--保留30天-->
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</appenders>
<loggers>
<Logger name="infoLog" additivity="TRUE" level="ALL">
<AppenderRef ref="infoLogRollingFile" level="ERROR" />
</Logger>
<Logger name="errorLog" additivity="TRUE" level="ALL">
<AppenderRef ref="errorLogRollingFile" level="ERROR" />
</Logger>
</loggers>
</configuration>
如错误日志输出代码示例:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private static Logger log = LogManager.getLogger("errorLog");