ログ ファイルにタイムスタンプが必要だったのでlog4j
、プロパティ ファイルの使用から xml の使用に切り替え、最後に に切り替えました。log4j2
<RollingFile name="File" fileName="log/${name}.log"
filePattern="log/${name}-%d{dd-MM-yyyy_HH.mm.ss}.log">
<PatternLayout
pattern="${pattern}" />
<Policies>
<OnStartupTriggeringPolicy>false</OnStartupTriggeringPolicy>
<SizeBasedTriggeringPolicy size="100 MB" /> <!-- Or every 100 MB -->
</Policies>
</RollingFile>
私の問題は、ファイルのタイムスタンプがその内容に対して「新しい」ものであることです。これは、ログの仕組みのためです。つまり、プログラムを実行するたびにファイル${name}.log
が書き込まれます。指定された名前のファイルが既に存在する場合、ファイルlog/${name}-%d{dd-MM-yyyy_HH.mm.ss}.log
が作成されます。以前のファイルの内容がそこにコピーされます。次に${name}.log
、現在の実行のログ情報で上書きされます。
そのため、タイムスタンプ付きのログ ファイルの内容とその名前で指定された時間の間には常に不一致があります。
質問
この問題を修正することは可能ですか? もしそうなら、私は何を設定しなければなりませんか?
例
name.log : 2 回目の実行からのデータが含まれます
19-07-2013 13:10:58.462 [main] INFO main.App (App.java:60)
Trying to print string!
19-07-2013 13:10:58.467 [main] INFO main.App (App.java:61)
Be aware!
19-07-2013 13:10:58.467 [main] INFO main.App (App.java:63)
String printed
19-07-2013 13:10:58.467 [main] DEBUG main.App (App.java:64)
Program executed!
name-19-07-2013_ 13.10.58 .log : 最初の実行からのデータが含まれています
19-07-2013 13:00:10.788 [main] INFO main.App (App.java:60)
Trying to print string!
19-07-2013 13:00:10.794 [main] INFO main.App (App.java:61)
Be aware!
19-07-2013 13:00:10.795 [main] INFO main.App (App.java:63)
String printed
19-07-2013 13:00:10.795 [main] DEBUG main.App (App.java:64)
Program executed!
追加データ
Run #1 started at: 19-07-2013 13:00:10
Run #2 started at: 19-07-2013 13:10:58
Run #1 log file : name-19-07-2013_13.10.58.log
Run #2 log file : name.log
ご覧のとおり、最初の実行のログのファイル名は、2 回目の実行がいつ開始されたかによって異なります。私はそれがいらいらし、誤解を招くと思います。