log4j2使用配置

log4j2支持配置滚动文件及删除策略,正确使用的场景下可以固定服务器的磁盘使用在设定的阀值内,不用关注磁盘被刷爆的情况,以下是项目中使用到的配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="0">
<Properties>
<Property name="LOG.LEVEL">INFO</Property>
<Property name="LOG.HOME">/export/Logs/business-log</Property>
<Property name="LOG.PATTERN">[%p]%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{traceId}|%msg[%c{1}#%M:%L][%t]%n</Property>
<Property name="bufferSize">8192</Property>
<Property name="interval">1</Property>
<Property name="immediateFlush">false</Property>
<Property name="append">true</Property>
<Property name="includeLocation">false</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG.PATTERN}" />
</Console>
<!-- debug,info,warn -->
<RollingRandomAccessFile name="info" fileName="${LOG.HOME}/info/info.log"
filePattern="${LOG.HOME}/info/info-%d{yyyyMMdd}-%i.log"
bufferSize="${bufferSize}" immediateFlush="${immediateFlush}" append="${append}">
<Filters>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${LOG.PATTERN}" />
<Policies>
<TimeBasedTriggeringPolicy interval="${interval}" modulate="true" />
<SizeBasedTriggeringPolicy size="500MB" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${LOG.HOME}/info" maxDepth="1">
<IfFileName glob="info-*.log">
<IfAny>
<IfAccumulatedFileCount exceeds="40" />
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- error -->
<RollingRandomAccessFile name="error" fileName="${LOG.HOME}/error/error.log"
filePattern="${LOG.HOME}/error/error-%d{yyyyMMdd}-%i.log"
bufferSize="${bufferSize}" immediateFlush="${immediateFlush}" append="${append}">
<Filters>
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${LOG.PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="${interval}" modulate="true" />
<SizeBasedTriggeringPolicy size="100MB" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${LOG.HOME}/error" maxDepth="1">
<IfFileName glob="error-*.log">
<IfAny>
<IfAccumulatedFileCount exceeds="40" />
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>

<!-- business log -->
<RollingFile name="business.log" fileName="${LOG.HOME}/Business/business.log"
filePattern="${LOG.HOME}/Business/business.%i.log">
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout charset="UTF-8"/>
<Policies>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<AsyncLogger name="java.sql" level="warn" />
<AsyncLogger name="java.sql.ResultSet" level="warn" />
<AsyncLogger name="org.springframework" level="warn" />
<AsyncLogger name="com.ibatis" level="warn" />
<AsyncLogger name="org.mybatis.spring" level="warn" />
<AsyncLogger name="org.apache.ibatis" level="warn" />
<AsyncLogger name="org.apache" level="warn" />
<AsyncLogger name="org.apache.commons" level="warn" />
<AsyncLogger name="io.netty" level="warn" />
<AsyncLogger name="com.alibaba" level="warn" />
<AsyncLogger name="com.datastax.driver.core" level="warn" />

<!-- 操作日志 -->
<AsyncLogger name="BusinessLogWriter" level="info" additivity="false">
<AppenderRef ref="business.log" />
</AsyncLogger>

<!-- 业务日志异步输出 -->
<AsyncLogger name="businessWriter" level="${LOG.LEVEL}" includeLocation="${includeLocation}" additivity="false">
<AppenderRef ref="info" />
<AppenderRef ref="error" />
</AsyncLogger>
<Root level="${LOG.LEVEL}" includeLocation="${includeLocation}">
<AppenderRef ref="info" />
<AppenderRef ref="error" />
</Root>
</Loggers>
</Configuration>

<Policies> 决定是否执行rollover操作,<DefaultRolloverStrategy>决定如何完成rollover

Policies中配置的TimeBasedTriggeringPolicy,基于时间触发是否执行rollover,interval 默认是1,这个单位是依据filePattern后的日期格式,日期格式精确到哪一位,interval也精确到哪一个单位

DefaultRolloverStrategy中配置max属性决定触发内部执行删除的前提条件,默认的是7,IfAccumulatedFileCount设置的是超过的文件数量

猜你喜欢

转载自www.cnblogs.com/wangflower/p/12213801.html