CodeGym/Java Course/モジュール 3/Log4j のログ フィルター

Log4j のログ フィルター

使用可能

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 レベル メッセージログレベルの名前を設定します: ERRORDEBUG、 …
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>
コメント
  • 人気
  • 新規
  • 古い
コメントを残すには、サインインしている必要があります
このページにはまだコメントがありません