CodeGym /課程 /All lectures for TW purposes /Log4j 中的日誌過濾器

Log4j 中的日誌過濾器

All lectures for TW purposes
等級 1, 課堂 951
開放

5.1 過濾器列表

記錄器允許您非常酷地配置消息過濾。為此,他有幾十個帶有各種參數的過濾器。下表顯示了最受歡迎的。

過濾器 描述
1個 突發濾波器 允許您控制給定日誌記錄級別的每秒消息頻率。
2個 複合過濾器 允許您設置多個順序過濾器。
3個 動態閾值濾波器 如果在日誌中找到某些信息,允許您啟用詳細日誌記錄。
4個 地圖過濾器 允許您從多個參數為過濾器構建複雜的邏輯表達式。
5個 標記過濾器 允許您按標籤過濾消息,必須在事件記錄期間首先添加標籤。
6個 正則過濾器 允許您設置一個掩碼 - 一個正則表達式。
7 結構化數據過濾器 允許您根據消息中是否存在某些數據來過濾消息。
8個 ThreadContextMapFilter 允許您根據從當前線程的上下文中獲取的數據來管理過濾器。
9 閾值過濾器 根據日誌消息級別控制日誌記錄。
10 時間過濾器 允許您在特定時間打開和關閉過濾器。

下面我們將只討論其中的三個。您可以在其官方網站上了解有關這些過濾器的更多信息。

5.2 時間過濾器

過濾器TimeFilter允許您在特定時間打開和關閉過濾器,它有 5 個參數:

1個 開始 以格式記錄開始時間HH:mm:ss
2個 結尾 註銷時間格式HH:mm:ss
3個 時區 設置時區。
4個 匹配上 如果過濾條件為真,如何記錄。也許ACCEPT,DENY或者NEUTRAL。默認NEUTRAL。
5個 不匹配 如果過濾條件為假,如何記錄。也許ACCEPT,DENY或者NEUTRAL。默認NEUTRAL。

讓我們設置一個過濾器,每天早上 5 點打開日誌記錄,並在早上 5:30 關閉它。下面是一個具有完整過濾器配置的示例:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
 <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.3 正則表達式過濾器

過濾器RegexFilter允許您設置用於過濾消息的掩碼(正則表達式)。這個過濾器有 4 個參數:

1個 正則表達式 指定正則表達式 - 用於過濾消息的掩碼。HH:mm:ss
2個 使用原始消息 在格式化之前 (true) 或格式化之後 (false) 在消息中應用掩碼
3個 匹配上 如果過濾條件為真,如何記錄。也許ACCEPT,DENY或者NEUTRAL。默認NEUTRAL。
4個 不匹配 如果過濾條件為假,如何記錄。也許ACCEPT,DENY或者NEUTRAL。默認NEUTRAL。

讓我們設置一個過濾器,只允許包含單詞 codegym 的消息。下面是一個具有完整過濾器配置的示例:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"   filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
 <RegexFilter regex=".* codegym .*" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
      </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.4 閾值濾波器

ThresholdFilter過濾器允許您按消息級別配置過濾。它只有3個參數:

1個 等級 設置消息日誌記錄級別的名稱:ERROR, DEBUG, …
2個 匹配上 如果過濾條件為真,如何記錄。也許ACCEPT,DENY或者NEUTRAL。默認NEUTRAL。
3個 不匹配 如果過濾條件為假,如何記錄。也許ACCEPT,DENY或者NEUTRAL。默認NEUTRAL。

讓我們設置一個過濾器,只允許 level 的消息DEBUG。下面是一個具有完整過濾器配置的示例:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
 <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION