Package nablarch.core.log.basic
Class DateRotatePolicy
java.lang.Object
nablarch.core.log.basic.DateRotatePolicy
- All Implemented Interfaces:
- RotatePolicy
日時でログのローテーションを行うクラス。
ログ書き込み時の現在日時 >= 保持している次回ローテーション日時の場合、ローテーションを行う。
 
ログ書き込み時の現在日時 >= 保持している次回ローテーション日時の場合、ローテーションを行う。
プロパティファイルの記述ルールを下記に示す。
- rotateTime
- ローテーション時刻。オプション。
 特定の時刻にログファイルをローテーションしたい場合に指定する。
 時刻は、HH, HH:mm, HH:mm:ss のいずれかのフォーマットで指定する。デフォルトは00:00:00。
次回ローテーション日時は、システム起動時とローテーション時に算出する。 計算方法は以下の通り。
まず、次回ローテーション日時を決めるための基準日時を決定する。 基準日時は、システム起動時かつログファイルが既に存在する場合とそれ以外の場合で以下の2通りの日時を採用する。
- システム起動時かつログファイルが存在する場合 → ログファイルの最終更新日時
- それ以外の場合 → システム日時
次に、基準日時の時刻と rotateTime の時刻を比較して、次回ローテーション日時の日付を決定する。
- 基準日時の時刻 <= rotateTime → 基準日時の日付
- rotateTime < 基準日時の時刻 → 基準日時の日付 + 1日
この日付に rotateTime の時刻を設定したものを、次回ローテーション日時とする。
   例えば、rotateTimeに 12:00:00 が設定されており、基準日時が 2023-03-25 11:59:59 の場合、
   次回ローテーション日時は 2023-03-25 12:00:00 となる。
   rotateTimeに 12:00:00 が設定されており、基準日時が 2023-03-25 12:00:01 の場合、
   次回ローテーション日時は 2023-03-26 12:00:00 となる。
 
ローテーション後のログファイル名は、 <ログファイルパス>.yyyyMMddHHmmssSSS.old となる。 yyyyMMddHHmmssSSSにはローテーション実施時刻が出力される。
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected Date現在日時を返す。ローテーション先のファイル名を決定する。ログファイル読み込み時に出力する、ローテーションの設定情報を返す。voidinitialize(ObjectSettings settings) 初期処理を行う。booleanneedsRotate(String message, Charset charset) ローテーションが必要かの判定を行う。voidonOpenFile(File file) ログファイル読み込み時に発生するイベント。
 ファイルサイズによるローテーションなどを独自で実装したい場合に使用する。voidログファイル書き込み時に発生するイベント。
 ファイルサイズによるローテーションなどを独自で実装したい場合に使用する。voidローテーションを行う。
- 
Constructor Details- 
DateRotatePolicypublic DateRotatePolicy()
 
- 
- 
Method Details- 
initialize初期処理を行う。 起動時にログファイルパスにログファイルが既に存在する場合は、ファイルの更新時刻から次回ローテーション日時を算出する。 この初期化処理により、例えば2023年3月6日にログファイルに書き込み後アプリを停止。2日後にアプリを再起動する場合、 起動時に本クラスが保持する次回ローテーション日時は2023年3月7日 となる。- Specified by:
- initializein interface- RotatePolicy
- Parameters:
- settings- LogWriterの設定
 
- 
needsRotateローテーションが必要かの判定を行う。
 現在時刻 >= 次回ローテーション日時の場合、ローテーションが必要と判定する。
 それ以外の場合は、ローテーションが不要と判定する。- Specified by:
- needsRotatein interface- RotatePolicy
- Parameters:
- message- ログファイルに書き込まれるメッセージ
- charset- 書き込み時に使用する文字エンコーディング
- Returns:
- ローテーションが必要な場合はtrue
 
- 
decideRotatedFilePathローテーション先のファイル名を決定する。 古いログファイル名は、 <ログファイルパス>.yyyyMMddHHmmssSSS.old のフォーマットで出力される。 日時には、ローテーション実施時刻が出力される。- Specified by:
- decideRotatedFilePathin interface- RotatePolicy
- Returns:
- ローテーション先のファイル名
 
- 
rotateローテーションを行う。 リネーム完了後に、 次回ローテーション日時を更新する。- Specified by:
- rotatein interface- RotatePolicy
- Parameters:
- rotatedFilePath- ローテーション先のファイルパス
- Throws:
- IllegalStateException- ログファイルのリネームができない場合
 
- 
getSettingsログファイル読み込み時に出力する、ローテーションの設定情報を返す。
 設定情報のフォーマットを下記に示す。
 ROTATE TIME = [<ローテーション時刻>] NEXT ROTATE DATE = [<次回ローテーション日時>] CURRENT DATE = [<現在時刻>]- Specified by:
- getSettingsin interface- RotatePolicy
- Returns:
- 設定情報
- See Also:
 
- 
currentDate現在日時を返す。- Returns:
- 現在日時
 
- 
onWriteログファイル書き込み時に発生するイベント。
 ファイルサイズによるローテーションなどを独自で実装したい場合に使用する。- Specified by:
- onWritein interface- RotatePolicy
- Parameters:
- message- ログファイルに書き込まれるメッセージ
- charset- 書き込み時に使用する文字エンコーディング
 
- 
onOpenFileログファイル読み込み時に発生するイベント。
 ファイルサイズによるローテーションなどを独自で実装したい場合に使用する。- Specified by:
- onOpenFilein interface- RotatePolicy
- Parameters:
- file- 読み込まれたファイル
 
 
-