2013-01-24 31 views
1

我想的名字從log4j的追加SYSDATE到名字,而不是filename.1,filename.2備份文件....Log4J的:與SYSDATE

我該怎麼辦呢備份文件名?

回答

2

要做到這一點,你需要使用Log4J的「額外」 JAR(由阿帕奇提供),並使用在那裏發現了RollingFileAppender(見FileNamePattern參數):http://logging.apache.org/log4j/companions/extras/apidocs/index.html

例如(Javadoc中有服用):

<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="FileNamePattern" value="/wombat/foo.%d{yyyy-MM}.gz"/> 
    </rollingPolicy> 
</appender> 
+0

如何在log4j.properties中配置? –

+0

只有在使用XML配置Log4J時,才能使用「DOMConfigurator」這種「較新」的配置工具。基本上,你所需要做的就是將'log4j.properties'文件轉換爲XML格式,將其稱爲'log4j.xml'並將其放入你的類路徑中。您可以查看'DOMConfigurator'獲取更多信息。無論如何,XML是Log4J配置的前進方向。 – Isaac

1

如果您需要以特定頻率備份文件,例如每分鐘或每小時進行一次備份,則類別將滿足您的目的。

但是,如果您需要在文件達到一定大小後進行歸檔,或許一種好的方法是擴展RollingFileAppender類。你需要重寫它的方式rollover()方法類似如下:

public void rollOver() { 
... 

file = new File(fileName + '.' + System.currentTimeMillis()); 

... 

} 
+0

一個已經被Log4J的社區進行(見我的回答如下)。 – Isaac

+0

我有一個覆蓋rollOver()方法的問題。它訪問RollingFileAppender的私有屬性不能從擴展類 –

+0

@AlexCuervo無法獲得您是否嘗試過'setFile(fileName +'。'+ System.currentTimeMillis())'? – RGO