<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" /> </layout> </appender> <!-- 将日志信息输出到文件,但是当文件的大小达到某个阈值的时候,日志文件会自动回滚 --> <appender name="INFO" class="org.apache.log4j.RollingFileAppender"> <!-- 设置日志信息输出文件全路径名 --> <param name="File" value="/var/cispLog/info/info.log" /> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true" /> <!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB --> <param name="MaxFileSize" value="100MB" /> <!-- 设置保存备份回滚日志的最大个数 --> <param name="MaxBackupIndex" value="10" /> <!-- 设置日志输出的样式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" /> </layout> <!--过滤器设置输出的级别 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <!-- 设置日志输出的最小级别 --> <param name="LevelMin" value="INFO" /> <!-- 设置日志输出的最大级别 --> <param name="LevelMax" value="INFO" /> </filter> </appender> <appender name="WARN" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="/var/cispLog/warn/warn.log" /> <param name="Append" value="true" /> <param name="MaxFileSize" value="50MB" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <appender name="ERROR" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="/var/cispLog/error/error.log" /> <param name="Append" value="true" /> <param name="MaxFileSize" value="50MB" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <root> <priority value="debug" /> <appender-ref ref="STDOUT" /> <appender-ref ref="INFO" /> <appender-ref ref="WARN" /> <appender-ref ref="ERROR" /> </root> </log4j:configuration>
在记录日志的时候,我们可能有这种需求,对于每个记录除了知道日志信息外,也要记录访问该系统的IP或者用户的信息。
MDC便提供了这个功能,只需要在代码中添加下面的方法即可
MDC.put("ip", ip);
MDC.put("userAccount", user.getUserAccount());
在配置文件中用下面的方式获取即可
%X{ip}
%X{userAccount}