1. 程式人生 > >log4j.xml 中配置多個輸出檔案

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中。

完成配置!!!