2014-04-17 58 views
0

我有以下log4j的配置:的Log4j沒有登錄到文件

# Root logger option 
log4j.rootLogger=file, stdout 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.Threshold=WARN 
log4j.appender.file.File=logs/log.log 
log4j.appender.file.MaxFileSize=10MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.Append=true 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

# Direct log messages to stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=INFO 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

登錄到標準輸出工作正常,但沒有什麼是登錄到我的文件。 該文件有確定的輸出,但沒有任何反應。

他爲什麼不登錄我的文件?

+0

你有寫權限的'logs'文件夾?磁盤已滿? – Reimeus

+0

是的,我有權限,沒有磁盤沒有滿。你在linux下運行的是 – Mulgard

+0

嗎? – Reimeus

回答

1

你可以像這樣改變你的配置文件。

# Root logger option 
log4j.rootLogger= ALL,file, stdout 

而且log4j.appender.stdout.Threshold = INFO變化水平像ALL其打印所有級別的日誌TRACE致命

0

一個原因可能是stdout appender(INFO)的閾值低於文件appender(WARN)。所以,如果只有INFO消息被記錄,你只能在stdout中看到它們,而不是在文件中。

0

這取決於你如何運行它。這只是一個正常的Java程序?例如,如果您嘗試在容器(如Karaf)中運行它,則有時可以設置特殊的日誌目標。