アペンダーのリスト

ロガーを使用すると、データを複数のファイルに一度に保存できます。このような出力データ ストリームは、アペンダー (from append) と呼ばれます。かなりの数の標準アペンダがあるため、最も人気のあるものだけを取り上げます。

アペンダー 説明
1 コンソール データをコンソールに出力します
2 ファイル データをファイルに出力します
3 毎日のローリングファイル データをファイルに出力し、ファイルは周期的に上書きされます
4 非同期 別のアペンダーに非同期的にデータを書き込むことができます
5 ソケット 特定のソケットにデータを書き込みます
6 JDBC JDBC プロトコルを使用してデータベースにメッセージを書き込みます
7 JPA JPAプロトコルを使用してデータベースにメッセージを書き込みます
8 HTTP HTTPプロトコル経由でイベントをリモートサーバーに送信します
9 SMTP メッセージをバッファに保存し、電子メールとして送信します

すべてのアペンダーに関する適切なドキュメントは公式 Web サイトにあります

そして以下では、それらの中で最も人気があり簡単なものを検討します。

コンソールアペンダー

最も単純なアペンダーは ですConsoleApender。ご想像のとおり、彼はメッセージをコンソールに書き込むだけです。これには、いくつかの興味深いパラメータがあります。

属性
1 名前 アペンダ名
2 フィルター 一部のメッセージをフィルタリングできます
3 レイアウト 出力時のメッセージの形式を指定します
4 目標 書き込む場所を指定します:SYTEM_OUTまたはSYSTEM_ERR

設定は非常に簡単です。


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%m%n"/>
        </Console>
    </Appenders>
      <Loggers>
        <Root level="error">
        <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
    </Configuration>

ファイルアペンダー

最も便利なアペンダーは ですFileAppenderConsoleAppender彼がメッセージをファイルに書き込むのとは異なります。これは、アプリケーションがサーバー上のどこかで実行されている場合に非常に便利です。パラメーターがたくさんあるので、異なるオペレーティング システム上でファイルを書き込むことができる必要があります。

ただし、その中で最も人気のあるものだけを検討します。

1 名前 アペンダの名前を指定します
2 フィルター 一部のメッセージをフィルタリングできます
3 レイアウト 出力時のメッセージの形式を指定します
4 ファイル名 メッセージを書き込むファイルの名前を指定します
5 追加する の場合true、メッセージは古いログに追加されます。false- の場合、ログ ファイルはアプリケーションが起動されるたびに再作成されます。
6 バッファサイズ バッファサイズをバイト単位で設定します
7 即時フラッシュ の場合true、各メッセージは実際には (バッファなしで) すぐにディスクに書き込まれます。ログの動作は遅くなりますが、これにより、プログラムがクラッシュしたときにデータが失われるのを防ぐことができます。

ファイルを適切に操作する方法はすでに知っているので、これらの設定は新しいものではありません。このようなロガーの設定は、コンソール ロガーよりもさらに簡単です。


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <File name="MyFile" fileName="logs/app.log">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
        </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>
    </Configuration>

RollingFileAppender

最も人気のあるアペンダーは ですRollingFileAppender。それとは異なりFileAppender、ログを多数の小さなファイルに分割できます。これは大きなログにとって非常に重要です。さらに、新しいファイルの書き込みが開始された後に古いファイルをどうするかに関するルールを設定することもできます。

そして、このアペンダーには約 100 もの異なる設定があります。詳細については、リンクを参照してください。

このアペンダーの最も一般的な属性を考慮してください。

属性
1 名前 アペンダの名前を指定します
2 フィルター 一部のメッセージをフィルタリングできます
3 レイアウト 出力時のメッセージの形式を指定します
4 ファイル名 メッセージを書き込むファイルの名前を指定します
5 ファイルパターン 書き込まれなくなったアーカイブ ファイルの命名パターンを指定します
6 ポリシー ファイルの上書きを開始する条件を指定します
7 ストラテジー アーカイブ、履歴の保存日数など、古いファイルの扱いについて説明します。

以下に良い例を示します。


<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
    </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

このパラメータは、filePattern古いログのアーカイブのテンプレートを指定します。また、トリガーされると新しいファイルが書き込まれるものが 2 つあります。

  • TimeBasedTriggeringPolicy– 新しい日が始まると機能します(現在の日付が変更されます)
  • SizeBasedTriggeringPolicy– ファイルサイズが 250MB に達した場合に機能します