5.1 フィルタの一覧
ロガーを使用すると、メッセージ フィルタリングを非常に適切に構成できます。これを行うために、彼はあらゆる種類のパラメーターを備えた数十のフィルターを用意しました。以下の表は、最も人気のあるものを示しています。
フィルター | 説明 | |
---|---|---|
1 | バーストフィルター | 特定のログ レベルで 1 秒あたりのメッセージの頻度を制御できます。 |
2 | 複合フィルタ | 複数の連続フィルターを設定できます。 |
3 | 動的しきい値フィルター | ログに特定の情報が見つかった場合に、詳細なログを有効にすることができます。 |
4 | マップフィルター | 複数のパラメーターからフィルターの複雑な論理式を構築できます。 |
5 | マーカーフィルター | タグによってメッセージをフィルタリングできます。タグはイベント ログ中に最初に追加する必要があります。 |
6 | 正規表現フィルター | マスク (正規表現) を設定できます。 |
7 | 構造化データフィルター | メッセージ内に特定のデータが含まれるかどうかに基づいてメッセージをフィルタリングできます。 |
8 | スレッドコンテキストマップフィルタ | 現在のスレッドのコンテキストから取得したデータに基づいてフィルターを管理できます。 |
9 | しきい値フィルター | ログ メッセージ レベルに基づいてログを制御します。 |
10 | タイムフィルター | 特定の時間にフィルターをオンまたはオフにできます。 |
以下では、そのうちの 3 つについてのみ説明します。これらのフィルターの詳細については、公式 Web サイトで確認できます。
5.2 タイムフィルター
フィルターをTimeFilter
使用すると、特定の時間にフィルターをオンまたはオフにすることができます。これには 5 つのパラメーターがあります。
1 | 始める | ロギング開始時刻の形式HH:mm:ss |
2 | 終わり | ログオフ時間の形式HH:mm:ss |
3 | タイムゾーン | タイムゾーンを設定します。 |
4 | onMatch | フィルター条件が trueかどうかをログに記録する方法。たぶんACCEPT 、、、DENY またはNEUTRAL 。デフォルトNEUTRAL 。 |
5 | 不一致 | フィルター条件が false の場合にログを記録する方法。たぶんACCEPT 、、、DENY またはNEUTRAL 。デフォルトNEUTRAL 。 |
毎日午前 5 時にログ記録をオンにし、午前 5 時半にオフにするフィルターを設定してみましょう。完全なフィルター構成の例を以下に示します。
<?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 | RawMsgを使用する | マスクはフォーマット前 (true) またはフォーマット後 (false) にメッセージに適用されます。 |
3 | onMatch | フィルター条件が trueかどうかをログに記録する方法。たぶんACCEPT 、、、DENY またはNEUTRAL 。デフォルトNEUTRAL 。 |
4 | 不一致 | フィルター条件が false の場合にログを記録する方法。たぶん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 | onMatch | フィルター条件が trueかどうかをログに記録する方法。たぶんACCEPT 、、、DENY またはNEUTRAL 。デフォルトNEUTRAL 。 |
3 | 不一致 | フィルター条件が false の場合にログを記録する方法。たぶんACCEPT 、、、DENY またはNEUTRAL 。デフォルトNEUTRAL 。 |
レベル のメッセージのみを許可するフィルターを設定しましょう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>
GO TO FULL VERSION