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>