现在的项目中,对于日志的配置,我们有时候需要配置对应不同的输出日志文件,例如按照模块划分,按照功能划分,分别输出到不同的日志文件中,下面介绍一下,怎么配置不同的输出日志文件。
下面是一整块的log4j.xml配置。如果对怎么配置spring 和 log4j不了解的话,可以参考我之前写的一篇文件,spring log4j配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration>
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="ERROR" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />
</layout>
</appender>
<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="/root/logs/web.log" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<!--设置日志备份频率,默认:为每天一个日志文件 -->
<param name="datePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
</layout>
</appender>
<appender name="TIME_TASK_APPENDER_LOG" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="logs/time_task.log" /><!-- 设置日志输出文件名 -->
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />
</layout>
</appender>
<logger name="time_task" additivity="false">
<level value="info" />
<appender-ref ref="TIME_TASK_APPENDER_LOG" />
</logger>
<!-- 根logger的设置-->
<root>
<priority value ="INFO"/>
<appender-ref ref="myConsole"/>
<appender-ref ref="myFile"/>
</root>
</log4j:configuration>
下面对上面的配置代码一一讲解:
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="ERROR" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />
</layout>
</appender>
这块是输出控制台的配置
<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="/root/logs/web.log" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<!--设置日志备份频率,默认:为每天一个日志文件 -->
<param name="datePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
</layout>
</appender>
这里是配置每天的日志产生,每天产生一个日志文件,格式是web.log.2018-09-20
<appender name="TIME_TASK_APPENDER_LOG" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="logs/time_task.log" /><!-- 设置日志输出文件名 -->
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />
</layout>
</appender>
<logger name="time_task" additivity="false">
<level value="info" />
<appender-ref ref="TIME_TASK_APPENDER_LOG" />
</logger>
这里是重点,我们配置了一个定时任务产生的log,下面看一下怎么使用它。
代码中的使用如下:注意:引用的是
org.apache.log4j.Logger
Logger.getLogger("time_task")对应的就是logger 的name = time_task
下面看下效果:有两个日志配置文件,一般的日志文件是在web.log中,定时任务的日志文件在time_task.log中。
完成配置!!!