SoftwareEngineering/Java/Logging/ApacheLog4j2

Appenders

RollingFileAppender

RollingFileAppenderは、fileNameパラメータで指定されたFileに書き込み、TriggeringPolicyおよびRolloverPolicyに従ってファイルをロールオーバーするOutputStreamAppenderです。 RollingFileAppenderは、実際にファイルI / Oを実行してロールオーバーを実行するために、OutputStreamManagerを拡張するRollingFileManagerを使用します。 異なる構成からのRolloverFileAppendersは共有できませんが、マネージャにアクセス可能であれば、RollingFileManagersを使用できます。 たとえば、サーブレットコンテナ内の2つのWebアプリケーションは、Log4jが両方に共通のClassLoaderにある場合、独自の構成を持ち、同じファイルに安全に書き込むことができます。

RollingFileAppenderは必要ですTriggeringPolicyとRolloverStrategyを。 トリガポリシーは、ロールオーバーを実行するかどうかを決定しますが、ロールオーバストラテジはロールオーバーの実行方法を定義します。 RolloverStrategyが設定されていない場合、RollingFileAppenderはDefaultRolloStrategyを使用します。 log4j-2.5以降、ロールオーバー時に実行するDefaultRolloStrategyのカスタム削除アクションを設定できます。 ファイル名が設定されていない場合は2.8であるため、DefaultRolloStrategyの代わりにDirectWriteRolloStrategyが使用されます。 log4j-2.9以降、カスタムPOSIXファイル属性ビューアクションは、ロールオーバー時に実行するようにDefaultRolloStrategyで設定できます。 定義されていない場合は、RollingFileAppenderの継承POSIXファイル属性ビューが適用されます。

ファイルのロックは、RollingFileAppenderによってサポートされていません。

パラメータ名タイプ説明
appendbooleantrueの場合、デフォルトのレコードがファイルの末尾に追加されます。
falseに設定すると、新しいレコードが書き込まれる前にファイルがクリアされます。
bufferedIObooleantrueの場合、デフォルトのレコードはバッファに書き込まれ、バッファがいっぱいになるとディスクに書き込まれます。
また、immediateFlushが設定されている場合は、レコードが書き込まれます。
ファイルロックは、bufferedIOでは使用できません。
パフォーマンステストでは、バッファ付きI / Oを使用すると、immediateFlushが有効になっていても、パフォーマンスが大幅に向上することが示されています。
bufferSizeintbufferedIOがtrueの場合、これはバッファサイズで、デフォルトは8192バイトです。
createOnDemandbooleanアペンダーはオンデマンドでファイルを作成します。
アペンダーは、ログイベントがすべてのフィルターを通過し、このアペンダーにルーティングされるときにのみファイルを作成します。
デフォルトはfalseです。
filterFilterこのアペンダーがイベントを処理するかどうかを決定するフィルター。
CompositeFilterを使用すると、複数のフィルタを使用できます。
fileNameString書き込むファイルの名前。
ファイルまたはその親ディレクトリのいずれかが存在しない場合、ファイルが作成されます。
filePatternStringアーカイブされたログファイルのファイル名のパターン。
パターンのフォーマットは、使用されるRolloverPolicyに依存します。
DefaultRolloPolicyは、 SimpleDateFormatと互換性のある日付/時刻パターンおよび/または整数カウンタを表す%iの両方を受け入れます。
このパターンは実行時の補間もサポートしているため、Lookup(DateLookupなど)のいずれもパターンに含めることができます。
immediateFlushbooleantrueに設定すると、デフォルトでは、各書き込みの後にフラッシュが続きます。
これにより、データがディスクに書き込まれることは保証されますが、パフォーマンスに影響を与える可能性があります。
書き込みごとにフラッシュするのは、同期ロガーでこのアペンダーを使用する場合にのみ有効です。
immediateFlushがfalseに設定されていても、非同期ロガーとアペンダーはイベントのバッチの最後に自動的にフラッシュします。
これにより、データがディスクに書き込まれることも保証されますが、より効率的です。
layoutLayoutLogEventの書式設定に使用するレイアウト。
レイアウトが指定されていない場合は、デフォルトパターンレイアウト "%m%n"が使用されます。
nameStringアペンダーの名前。
policyTriggeringPolicyロールオーバが発生するかどうかを判断するために使用するポリシー。
strategyRolloverStrategyアーカイブファイルの名前と場所を決定するための戦略。
ignoreExceptionsbooleanデフォルトはtrueです。
イベントを追加する際に例外が発生し、内部的にログに記録され、無視されます。
falseに設定すると、代わりに例外が呼び出し元に伝播されます。
このAppenderをFailoverAppenderでラップするときは、これをfalseに設定する必要があります。
filePermissionsStringファイルが作成されるたびに適用されるPOSIX形式のファイル属性パーミッション。
基底ファイルシステムは、POSIXファイル属性ビューをサポートしなければならない。
例:rw -------またはrw-rw-rw- etc ...
fileOwnerStringファイル所有者は、ファイルが作成されるたびに定義します。
セキュリティ上の理由からファイルの所有者を変更することが制限されている可能性があります。
_POSIX_CHOWN_RESTRICTEDがパスに対して有効な場合、ファイルのユーザーIDまたは適切な特権を持つ実効ユーザーIDを持つプロセスのみがファイルの所有権を変更する可能性があります。
基本ファイルシステムは、ファイル所有者属性ビューをサポートしなければならない。
fileGroupStringファイルが作成されるたびに定義するファイルグループ。
基底ファイルシステムは、POSIXファイル属性ビューをサポートしなければならない。

Triggering Policies

Composite Triggering Policy

CompositeTriggeringPolicyは複数のトリガーポリシーを組み合わせ、設定されたポリシーのいずれかがtrueを返す場合はtrueを返します。 CompositeTriggeringPolicyは、ポリシー要素に他のポリシーをラップするだけで構成されます。 たとえば、次のXMLフラグメントは、JVMの起動時、ログサイズが20メガバイトに達したとき、 および現在の日付がログの開始日と一致しなくなったときに、ログをロールオーバーするポリシーを定義します。

<Policies>
  <OnStartupTriggeringPolicy />
  <SizeBasedTriggeringPolicy size = "20 MB" />
  <TimeBasedTriggeringPolicy />
</ Policies> 

Cron Triggering Policy

CronTriggeringPolicy は、cron expression に基づいてロールオーバーをトリガーします。

パラメータ名タイプ説明
scheduleStringcron expression
この式は、Quartzスケジューラで許可されているものと同じです。
式の詳細については、 CronExpression を参照してください。
evaluateOnStartupString起動時に、cron式はファイルの最終更新タイムスタンプと比較して評価されます。
cron expression が、その時刻と現在の時刻の間にロールオーバが発生したはずであることを示す場合、ファイルはすぐにロールオーバーされます。

OnStartup Triggering Policy

OnStartupTriggeringPolicy ポリシーは、ログファイルが現在のJVMの開始時刻より古いもので、最小ファイルサイズが満たされているか超過している場合にロールオーバーを引き起こします。

パラメータ名タイプ説明
minSizelongファイルがロールオーバーする必要がある最小サイズ。
サイズがゼロの場合、ファイルサイズに関係なくロールオーバーが発生します。
デフォルト値は1で、空のファイルをローリングすることはありません。

Google App Engine note: Google App Engineで実行しているとき、Log4Jが初期化された時間より古いログファイルの場合、OnStartupポリシーはロールオーバーを引き起こします 。 (Google App Engineは特定のクラスへのアクセスを制限して、Log4Jは

java.lang.management.ManagementFactory.getRuntimeMXBean().getStartTime()

を使用して JVM の開始時刻を判断できず、代わりに Log4J の初期化時刻に戻ります。

SizeBased Triggering Policy

SizeBasedTriggeringPolicy は、ファイルが指定されたサイズに達するとロールオーバーを引き起こします。 サイズはバイト単位で指定できます。接尾辞はKB、MBまたはGBです(例: 20MB)

TimeBased Triggering Policy

TimeBasedTriggeringPolicyは、日付/時刻パターンがアクティブなファイルに適用されなくなるとロールオーバーを引き起こします。 このポリシーは、ロールオーバーが時間パターンとブール値の変調属性に基づいて発生する頻度を示す間隔属性を受け入れます。

パラメータ名タイプ説明
intervalinteger日付パターンの最も特定の時間単位に基づいてロールオーバが発生する頻度。
たとえば、最も具体的な項目として時間を含む日付パターンを使用し、4時間ごとに4つのロールオーバーの増分が発生します。
デフォルト値は1です。
modulateboolean間隔の境界で次のロールオーバーが発生するように間隔を調整する必要があるかどうかを示します。
たとえば、アイテムが時間帯の場合、現在の時間は午前3時で、間隔が4の場合、最初のロールオーバーは午前4時に発生し、次の午前8時、正午、午後4時などに発生します。
maxRandomDelayintegerロールオーバをランダムに遅らせる最大秒数を示します。
デフォルトでは、これは0であり、遅延がないことを示します。
この設定は、複数のアプリケーションが同時にログファイルをロールオーバーするように構成されているサーバーで役に立ち、時間の経過とともにその負荷を分散させることができます。

Rollover Strategies


トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS