說說如何配置 log4j 日誌(xml 方式)

1 日誌等級

log4j 日誌等級分爲五級:web

等級 說明
DEBUG 調試(細粒度)。
INFO 應用程序的運行過程(粗粒度)。
WARN 可能存在潛在錯誤。
ERROR 發生錯誤事件,但不影響系統運行。
FATAL 發生嚴重錯誤事件,致使系統退出。

通常只使用到前四種。apache

2 目標

咱們但願這樣管理日誌: 一、日誌放在 logs/web/ 下。 二、日誌文件分爲 debug.log、info.log 以及 error.log。 三、每小時生成一份日誌文件。 四、debug.log 包含全部級別日誌。 五、info.log 包含除 debug 以外的全部級別日誌。 六、error.log 包含 ERROR、FATAL 日誌。bash

3 配置

配置文件 xxx.xml,放置在 classes/app

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>

    <!-- 控制檯日誌-->
    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]:[%c][%M] \ [%l] [%m] %n"/>
        </layout>
    </appender>

    <!-- DEBUG 級別日誌-->
    <appender name="debugAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 日誌輸出路徑-->
        <param name="File" value="${catalina.base}/logs/web/debug.log"/>

        <!-- 每小時生成一個新日誌-->
        <param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>

        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 最低級別-->
            <param name="levelMin" value="DEBUG"/>
        </filter>

        <!-- 日誌輸出格式-->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]: [%c][%M][%l] [%m] %n"/>
        </layout>
    </appender>

    <!-- INFO 級別日誌-->
    <appender name="infoAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 日誌輸出路徑-->
        <param name="File" value="${catalina.base}/logs/web/info.log"/>

        <!-- 每小時生成一個新日誌-->
        <param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>

        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 最低級別-->
            <param name="levelMin" value="INFO"/>
        </filter>

        <!-- 日誌輸出格式-->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]: [%c][%M][%l] [%m] %n"/>
        </layout>
    </appender>

    <!-- Error 級別日誌-->
    <appender name="errorAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 日誌輸出路徑-->
        <param name="File" value="${catalina.base}/logs/web/error.log"/>

        <!-- 每小時生成一個新日誌-->
        <param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>

        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 最低級別-->
            <param name="levelMin" value="ERROR"/>
        </filter>

        <!-- 日誌輸出格式-->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]: [%c][%M][%l] [%m] %n"/>
        </layout>
    </appender>


    <root>
        <priority value="debug"/>
        <appender-ref ref="ConsoleAppender"/>
        <appender-ref ref="debugAppender"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </root>

</log4j:configuration>
複製代碼

4 輸出器

輸出器 說明
ConsoleAppender 控制檯。
FileAppender 文件。
RollingFileAppender 文件,當文件大小達到必定閾值時,自動備份。
DailyRollingFileAppender 文件,可設置按期備份策略。
WriterAppender 將日誌信息以流格式發送到指定位置。

5 輸出格式

格式 說明
%c 輸出日誌信息所屬的類的全名
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy-MM-dd HH:mm:ss },輸出相似:2002-10-18- 22:10:28
%f 輸出日誌信息所屬的類的類名
%l 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
%m 輸出代碼中指定的信息,如log(message)中的message
%n 輸出一個回車換行符,Windows平臺爲「/r/n」,Unix平臺爲「/n」
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。若是是調用debug()輸出的,則爲DEBUG,依此類推
%r 輸出自應用啓動到輸出該日誌信息所耗費的毫秒數
%t 輸出產生該日誌事件的線程名

6 DatePattern

DailyRollingFileAppender 中能夠設置日誌生成的時間頻度(DatePattern),格式以下:ui

時間頻度 格式
每個月 yyyy-MM
每週 yyyy-ww
天天 yyyy-MM-dd
每半天 yyyy-MM-dd-a
每小時 yyyy-MM-dd-HH
每分鐘 yyyy-MM-dd-HH-mm

形如:spa

<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
複製代碼

注意: 一、不在表中的字符,必須寫在 '' 之間。 二、必須遵循操做系統文件夾的命名規範。操作系統

若是不遵照這些規則,但是會靜默失敗的哦O(∩_∩)O~線程

7 LevelRangeFilter

每個 appender,均可以配置一個 LevelRangeFilter(日誌等級過濾器),來指定須要輸出的日誌範圍。debug

參數 說明
levelMin 最低等級
levelMax 最高等級

等級可選值爲:OFF、FATAL、ERROR、WARN、、INFO、DEBUG、TRACE、ALL。調試

8 日誌輸出路徑

可使用 ${catalina.base} 來指定 Tomcat 的根目錄。

相關文章
相關標籤/搜索