2012-12-19 182 views
1

有沒有人看到爲什麼這個日誌不寫入文件。它是兩次寫入標準輸出,但不是寫入文件:問題log4j日誌不寫入文件

此外,我試圖刪除「Stdout」appender,然後我根本沒有得到任何日誌記錄。

package org.berlin.wicket; 
import org.apache.log4j.Logger; 
private static final Logger LOG = Logger.getLogger(QuickstartPage.class); 
LOG.info("Loading constructor"); 

log4j.rootLogger = DEBUG,STDOUT mainAppender

log4j.appender.Stdout = org.apache.log4j.ConsoleAppender log4j.appender.Stdout.layout = org.apache.log4j。的PatternLayout

log4j.appender.Stdout.layout.conversionPattern =% - 5P - %-26.26c {1} - %米\ n

log4j.appender.mainAppender = org.apache.log4j.DailyRollingFileAppe的nDer

log4j.appender.mainAppender.file =日誌/ core.log

log4j.appender.mainAppender.datePattern = '' YYYY-MM-DD

log4j.appender.mainAppender.append =真

log4j.appender.mainAppender.layout = org.apache.log4j.PatternLayout

log4j.appender.mainAppender.layout.ConversionPattern = [%d {MM/DD/YYYY HH:MM:SS。 SSS}] [%C {1}。%M():%L] [%t] [%p] - %m%n

log4j.logger.org.berlin = DEBUG,標準輸出,mainAppender

回答

3

你必須使用相同的appender名伐木搬運工(標準輸出),因此爲什麼你看到控制檯上輸入兩次。

正如其他人所說,屬性是區分大小寫的,因此爲什麼你的文件appender配置不正確。

+0

我不是第一部分。哪兩個記錄器指向同一個appender? RootLogger和logger.org.berlin?/log4j.logger.org.berlin = DEBUG,Stdout,mainAppender? –

+0

是的 - rootLogger和org.berlin都使用Stdout作爲appender。我懷疑這種重複是你看到兩個控制檯寫入的原因。 –

+0

很酷,我修改了,它工作。我還將文件路徑更改爲完整文件路徑。 –

-3

您應該創建寫入記錄到一個名爲myfile.log文件的FileHandler的一個實例。

FileHandler fileHandler = new FileHandler("myfile.log", true);   
logger.addHandler(fileHandler); 
+0

應該嗎?或者可以嗎?我從來沒有爲log4j做過。這意味着我不得不在我的所有代碼中添加更多的日誌記錄。你看到我的log4j.properties文件的問題 –

+0

我沒有看到你的log4j.properties文件的問題。您的日誌文件是否已創建? – tchike

+0

我認爲它實際上是我使用的「文件」路徑。 –

2

FileAppend屬性是大小寫敏感的。

log4j.appender.mainAppender.File=someFileName.log log4j.appender.mainAppender.Append=true