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個 匹配上 如果過濾條件為真,如何記錄。也許ACCEPTDENY或者NEUTRAL。默認NEUTRAL
5個 不匹配 如果過濾條件為假,如何記錄。也許ACCEPTDENY或者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個 匹配上 如果過濾條件為真,如何記錄。也許ACCEPTDENY或者NEUTRAL。默認NEUTRAL
4個 不匹配 如果過濾條件為假,如何記錄。也許ACCEPTDENY或者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個 匹配上 如果過濾條件為真,如何記錄。也許ACCEPTDENY或者NEUTRAL。默認NEUTRAL
3個 不匹配 如果過濾條件為假,如何記錄。也許ACCEPTDENY或者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>