2013-01-15 91 views
2

我有以下配置的log4j屬性:覆寫log4j的工作不

log4j.appender.LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.LOG.File=${directory}/log/app.log 
log4j.appender.LOG.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOG.layout.ConversionPattern=%d{dd MMM HH:mm:ss,SSS} %-5p [%c{1}] %m%n 
log4j.appender.LOG.Threshold=DEBUG 
log4j.appender.LOG.append=false 
log4j.appender.LOG.bufferedIO=false 

log4j.appender.LOGHISTORY=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.LOGHISTORY.File=${directory}/log/old-logs/app.log 
log4j.appender.LOGHISTORY.File.DatePattern='.'yyyy-MM-dd 
log4j.appender.LOGHISTORY.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOGHISTORY.layout.ConversionPattern=%d{dd MMM HH:mm:ss,SSS} %-5p [%c{1}] %m%n 
log4j.appender.LOGHISTORY.Threshold=DEBUG 
log4j.appender.LOGHISTORY.append=true 
log4j.appender.LOGHISTORY.bufferedIO=false 

我想保存前一天的日誌的歷史,在「登錄/老日誌」文件夾中。這對DailyRollingFileAppender非常有用。

我還想在「日誌」文件夾中記錄當天的日誌。這在我的localhost(Windows + Eclipse + Geronimo)上工作正常,但在我的測試服務器(Linux + WebSphere)上無法正常工作。在這種情況下,「app.log」不會被覆蓋,並且所有內容都將被添加到日誌末尾。

+0

在webapp容器中log4j.properties可能放在WEB-INF /中以便加載 – farmer1992

+0

server-log4j.properties基於服務器。 – hadescz

回答

1

檢查this。 您應該以大寫A.

log4j.appender.LOG.Append=false 
    log4j.appender.LOGHISTORY.Append=true 
+0

不幸,同樣的結果。 – hadescz

+0

任何警告或錯誤? –

+1

不,所有內容都在日誌末尾添加,沒有警告和錯誤。 – hadescz

0

對於RollingFileAppender進行使用追加,你需要指定屬性「MAXFILESIZE」。這將告訴log4j在文件達到該大小時滾動文件。

例如:當日志文件大小達到下面將推出超過2MB

log4j.appender.LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.LOG.File=${directory}/log/app.log 
log4j.appender.LOG.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOG.layout.ConversionPattern=%d{dd MMM HH:mm:ss,SSS} %-5p [%c{1}] %m%n 
log4j.appender.LOG.Threshold=DEBUG 
log4j.appender.LOG.MaxFileSize=2MB 
log4j.appender.LOG.MaxBackupIndex=2 (This is optional, tells log4j the maximum backup files to take) 
+0

對不起,我不想在文件大小達到時滾動文件,我想每天滾動文件。問題在於頂層的配置是在windows + geronimo環境下工作,而不是在linux + websphere上。 – hadescz

5

AFAIK Rolling file appender達到指定的最大大小時,將只滾動文件。 上述場景可能會在本地複製中爲您工作,每次應用程序重新啓動時,日誌文件將被覆蓋,因爲.append = false。在生產環境中,我認爲服務器不會重新啓動,因此該文件按照.append = false編寫。這可能是你的情況,爲什麼覆蓋不起作用?

+0

是的,這可能確實如此。所以我想我應該使用DailyRollingFileAppender,但我不想保留歷史日誌,只是今天的一個。 – hadescz

+0

您可以使用'TimeBasedRollingPolicy'來壓縮歷史日誌 – Sam