我使用屬性文件從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!
名稱-19-07-2013_ 58年10月13日的.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
正如你所看到的,在第一次運行的日誌文件名取決於當第二次運行是 開始。我覺得這很刺激和誤導。
問題在哪裏?文件名稱中的時間是文件轉出時的時間。之後,因爲新消息被髮送到正常的日誌文件,所以沒有附加新消息。 –
問題是,當log4j2複製舊的'當前'文件的內容時,它應該將該文件的創建日期設置爲時間戳,而不是一些較新的日期,與包含的數據無關。至少我想要這樣配置它。但我不能。 – mike
文件的日期與內容無關。*文件中給出的時間戳之前,文件中的所有日誌條目都是*。這是因爲'RollingFileAppender'將當前日誌文件重命名爲一個帶有時間戳(滾動)的文件,然後創建一個新文件創建新日誌文件。 –