我从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 :包含第二次运行的数据
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
如您所见,第一次运行日志的文件名取决于第二次运行的开始时间。我觉得这令人恼火和误导。