log4j.xml 中配置多個輸出檔案
現在的專案中,對於日誌的配置,我們有時候需要配置對應不同的輸出日誌檔案,例如按照模組劃分,按照功能劃分,分別輸出到不同的日誌檔案中,下面介紹一下,怎麼配置不同的輸出日誌檔案。
下面是一整塊的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中。
完成配置!!!