2011-02-01 118 views
7

我在這裏看到了很多關於log4j不同appender的問題,但似乎沒有涉及到我遇到的問題。如果這在任何地方重複,道歉。修改CompositeRollingAppender如何重命名文件

我在我們的應用中使用了CompositeRollingAppender,因爲我們需要根據時間和大小來滾動日誌文件。這個作品完全一樣標榜,但我們最終文件一樣:

myapp.log 
myapp.log.2010-12-11 
myapp.log.2010-12-11.1 
myapp.log.2010-12-12 

是否有可能改變的log4j如何重命名文件的格式?我確信必須有一個難以捉摸的財產某處我錯過了。例如,在上述情況下,我想是這樣的:

myapp.log 
myapp-2010-12-11.log 
myapp-2010-12-11.1.log 
myapp-2010-12-12.log 

點這裏是該擴展仍的.log你問爲什麼?因爲我們應用程序的管理員抱怨說,他們不能只是雙擊文件來打開它(我知道,我知道)。如果他們都有.log擴展名,則情況不會如此。

在此先感謝。

+0

這是一個kludge,但你可以在你的日期模式中包含`.log`文字。當然你的文件看起來像`myapp.log-2010-12-11.log`,但至少可以通過雙擊打開它們。 – biziclop 2011-02-01 17:02:43

回答

0

CompositeRollingAppender不支持你想要的功能。如何確定(啓動時)是否已經有一個適當的日誌文件要添加到該文件中,這是相當有限的。它只支持添加日期和編號到配置的靜態名稱的末尾。

您可以嘗試使用log4j演員CompositeTriggeringPolicy但我不知道RollingPolicy將包括日期和窗口。

爲您管理員的選擇是放棄對文件的大小限制,所以你可以用

<param name="FileNamePattern" value="MyApp.%d{yyyy-MM-W}.log" /> 

TimeBasedRollingPolicy使用RollingFileAppender或與當前的名字居住或運行一個cron作業重命名文件,但請記住,您不能在第二天重命名文件(否則您將收到文件名衝突)。

0

我認爲你可以使用

<param name="FileNamePattern" value="C:\\logs\\MyApp.%d{yyyy-MM-dd}.log" />