JVM的配置:
DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
参考资料:
https://www.cnblogs.com/Mainz/p/3628414.html
<?xml version="1.0" encoding="UTF-8"?>
<!-- status=debug 可以查看log4j的装配过程 -->
<Configuration monitorInterval="120" status="info">
<properties>
<property name="log.home">/export/Logs/com.xxx.tt</property>
<Property name="logPatternLayout">%d{yyyy-MM-dd HH:mm:ss.SSS} - %X{x-request-id} [%t] %-5level %logger{1.}:%L - %msg%n</Property>
<Property name="rollingLogSize">128 MB</Property>
<Property name="keepDay">60D</Property>
<Property name="log.level">info</Property>
</properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<ThresholdFilter level="${log.level}" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${logPatternLayout}"/>
</Console>
<!-- INFO级别日志 -->
<RollingRandomAccessFile name="INFO_FILE" fileName="${log.home}/info.log" filePattern="${log.home}/$${date:yyyyMMdd}/info.%d{yyyyMMdd}-%i.log.gz" immediateFlush="false">
<PatternLayout pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<!-- 备份策略:满足其中一个就可以启动备份-->
<Policies>
<!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${rollingLogSize}"/>
</Policies>
<DefaultRolloverStrategy>
<!-- 删除指定目录下60天之前的日志-->
<Delete basePath="${log.home}" maxDepth="2">
<IfFileName glob="*/info.*.log.gz" />
<IfLastModified age="${keepDay}" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- ERROR级别日志 -->
<RollingRandomAccessFile name="ERROR_FILE" fileName="${log.home}/error.log" filePattern="${log.home}/$${date:yyyyMMdd}/error.%d{yyyyMMdd}-%i.log.gz"
immediateFlush="false">
<PatternLayout pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<!-- 备份策略:满足其中一个就可以启动备份-->
<Policies>
<!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${rollingLogSize}"/>
</Policies>
<DefaultRolloverStrategy>
<!-- 删除指定目录下60天之前的日志-->
<Delete basePath="${log.home}" maxDepth="2">
<IfFileName glob="*/error.*.log.gz" />
<IfLastModified age="${keepDay}" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- MQ日志 -->
<RollingRandomAccessFile name="JMQ_FILE" fileName="${log.home}/jmq.log" filePattern="${log.home}/$${date:yyyyMMdd}/jmq.%d{yyyyMMdd}-%i.log.gz"
immediateFlush="false">
<PatternLayout pattern="${logPatternLayout}"/>
<!-- 备份策略:满足其中一个就可以启动备份-->
<Policies>
<!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${rollingLogSize}"/>
</Policies>
<DefaultRolloverStrategy>
<!-- 删除指定目录下60天之前的日志-->
<Delete basePath="${log.home}" maxDepth="2">
<IfFileName glob="*/jmq.*.log.gz" />
<IfLastModified age="${keepDay}" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- work日志 -->
<RollingRandomAccessFile name="WORK_FILE" fileName="${log.home}/work.log" filePattern="${log.home}/$${date:yyyyMMdd}/work.%d{yyyyMMdd}-%i.log.gz"
immediateFlush="false">
<PatternLayout pattern="${logPatternLayout}"/>
<!-- 备份策略:满足其中一个就可以启动备份-->
<Policies>
<!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${rollingLogSize}"/>
</Policies>
<DefaultRolloverStrategy>
<!-- 删除指定目录下60天之前的日志-->
<Delete basePath="${log.home}" maxDepth="2">
<IfFileName glob="*/work.*.log.gz" />
<IfLastModified age="${keepDay}" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- jsf日志 -->
<RollingRandomAccessFile name="JSF_FILE" fileName="${log.home}/jsf.log" filePattern="${log.home}/$${date:yyyyMMdd}/jsf.%d{yyyyMMdd}-%i.log.gz" immediateFlush="false">
<PatternLayout pattern="${logPatternLayout}"/>
<!-- 备份策略:满足其中一个就可以启动备份-->
<Policies>
<!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${rollingLogSize}"/>
</Policies>
<DefaultRolloverStrategy>
<!-- 删除指定目录下60天之前的日志-->
<Delete basePath="${log.home}" maxDepth="2">
<IfFileName glob="*/jsf.*.log.gz" />
<IfLastModified age="60d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<!-- 关闭某个目录的日志 -->
<Logger additivity="false" level="OFF" name="com.XXXX"/>
<Logger additivity="false" level="OFF" name="com.XXXX"/>
<Logger additivity="false" level="OFF" name="com.XXXX"/>
<Logger additivity="true" level="${log.level}" name="com.jd">
<appender-ref ref="ERROR_FILE"/>
<appender-ref ref="INFO_FILE"/>
</Logger>
<Logger additivity="true" level="${log.level}" name="com.XXXq">
<appender-ref ref="JMQ_FILE"/>
</Logger>
<Logger additivity="true" level="${log.level}" name="com.XXX.jmq">
<appender-ref ref="JMQ_FILE"/>
</Logger>
<Logger additivity="true" level="${log.level}" name="com.XXX.worker">
<appender-ref ref="WORK_FILE"/>
</Logger>
<Logger additivity="true" level="${log.level}" name="com.****.worker">
<appender-ref ref="WORK_FILE"/>
</Logger>
<Logger additivity="true" level="${log.level}" name="jsf-provider-log">
<appender-ref ref="JSF_FILE"/>
</Logger>
<Logger additivity="true" level="${log.level}" name="jsf-consumer-log">
<appender-ref ref="JSF_FILE"/>
</Logger>
<Root level="${log.level}">
<appender-ref ref="console"/>
</Root>
</Loggers>
</Configuration>