log4j2.xml 配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="1800">
<Properties>
<!-- 配置日志文件输出目录 -->
<Property name="LOG_HOME">E:\\logs\\AliAPI</Property>
<property name="FILE_NAME">AliAPI</property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<!-- %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间 %p : 日志输出格式 %c : logger的名称
%m : 日志内容,即 logger.info("message") %n : 换行符 %C : Java类名 %L : 日志输出所在行数 %M
: 日志输出所在方法名 hostName : 本地机器名 hostAddress : 本地ip地址 -->
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}
%L %M - %msg%xEx%n" />
</Console>
<RollingRandomAccessFile name="runFile"
fileName="${LOG_HOME}/run.log" filePattern="${LOG_HOME}/run/run-%d{yyyy-MM-dd-HH}-%i.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}
%L %M - %msg%xEx%n" />
<Policies>
<!--每小时生成一个文件,共记录近6小时日志 -->
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
<!-- 最大保存文件数 -->
<DefaultRolloverStrategy>
<Delete basePath="${LOG_HOME}/run" maxDepth="1">
<IfFileName glob="run-*.log" />
<IfLastModified age="6H" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="runErrFile"
fileName="${LOG_HOME}/runerr.log" filePattern="${LOG_HOME}/runerr/runerr-%d{yyyy-MM-dd-HH-mm}-%i.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}
%L %M - %msg%xEx%n" />
<Policies>
<!-- 每小时生成一个文件,共记录近2小时业务错误日志,10分钟一个日志文件 -->
<TimeBasedTriggeringPolicy interval="10"
modulate="true" />
</Policies>
<!-- 最大保存文件数 -->
<DefaultRolloverStrategy>
<Delete basePath="${LOG_HOME}/runerr" maxDepth="1">
<IfFileName glob="runerr-*.log" />
<IfLastModified age="12M" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- 这个会打印出所有的信息 -->
<!-- 按年份-月份建立的文件夹下面并进行压缩,作为存档,共保留100天压缩后日志 -->
<RollingRandomAccessFile name="dayFile"
fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/day/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${LOG_HOME}/day" maxDepth="1">
<IfFileName glob="${FILE_NAME}-*.log.gz" />
<IfLastModified age="200D" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<!-- 指定某个方法单独文件打印日志 -->
<RollingRandomAccessFile name="runParamFile"
fileName="${LOG_HOME}/param.log" filePattern="${LOG_HOME}/param/param-%d{yyyy-MM-dd-HH-mm}-%i.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}
%L %M - %msg%xEx%n" />
<Policies>
<!-- 每小时生成一个文件,共记录近2小时业务错误日志,10分钟一个日志文件 -->
<TimeBasedTriggeringPolicy interval="10"
modulate="true" />
</Policies>
<!-- 最大保存文件数 -->
<DefaultRolloverStrategy>
<Delete basePath="${LOG_HOME}/param" maxDepth="1">
<IfFileName glob="param-*.log" />
<IfLastModified age="12M" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="com.wondersgroup.sbpc" level="error" additivity="true">
<AppenderRef ref="runErrFile" />
</Logger>
<Logger level="warn" name="org.springframework" additivity="true" />
<Logger name="paramLogger" level="info" additivity="true">
<AppenderRef ref="runParamFile" />
</Logger>
<root level="info" includeLocation="true">
<AppenderRef ref="dayFile" />
<AppenderRef ref="Console" />
<AppenderRef ref="runFile" />
</root>
</Loggers>
</configuration>
代码对应的是
Logger logger = LoggerFactory.getLogger(getClass());
Logger paramLogger = LoggerFactory.getLogger("paramLogger");
变量paramLogger对应的配置是
<Logger name="paramLogger" level="info" additivity="true">
<AppenderRef ref="runParamFile" />
</Logger>
使用 paramLogger.info()方法,会生成日志文件param.log