2017-07-09 100 views
0

我有一個類存儲其中包含像「log.info(...)」的語句。我可以在運行程序時看到帶有日誌文件的日誌消息。但是,當我運行JUnit測試時,將不會創建日誌文件,但我仍然希望看到日誌消息。該記錄儀:運行Junit測試時,爲什麼日誌消息不會寫入我的日誌文件?

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

而且我log4j屬性:

log4j.rootLogger=DEBUG, STDOUT, file 

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender 
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout 
log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=mylogs.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n 

的問題是,如何還創建日誌文件和日誌信息運行我的JUnit測試的時候?

編輯:測試日誌屬性

部分:

log4j.rootLogger=ERROR, Console 
log4j.logger.play=DEBUG 
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m%n 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=testlog.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n 
+0

這是什麼類型的項目,例如maven,gradle,基本的eclipse/intellij java項目等?你在測試類路徑中有'log4j.properties'嗎? – Morfic

+0

@Morfic,這是Eclipse中的maven項目。是的,我在src/test/resources文件夾下有一個log4j.properties文件。 – user697911

+0

您可以使用它來自定義測試的日誌配置?它看起來像什麼,也許它只有一個控制檯appender定義? – Morfic

回答

0

根據該配置,你可能期望有一個testlog.log文件在你的項目的根。

儘管如此,file appender未被引用,因此只會使用Console appender記錄消息。但是,您的rootLogger設置爲ERROR級別,因此消息低於此級別,例如DEBUG,INFOWARN將被丟棄。

你可以改變你的rootLogger配置,使所有非明確的配置記錄器繼承,就像在你的其他log4j.properties,或者定義一個記錄你的包,將其設置爲DEBUG(或任何你想要的水平),並使用兩個追加:log4j.logger.my.package.here=DEBUG, Console, file

延伸閱讀資源: - log4j v1.2 into - log4j 1.2 configuration

附::請注意,有時Eclipse會遇到文件系統更改的問題,並且不會自動更新項目文件。如果發生了。在運行測試後,嘗試在Navigator視圖中右鍵單擊項目,然後選擇刷新,然後滾動到您的pom所在的結尾。或者打開您選擇的文件瀏覽器,轉到磁盤上的項目根目錄,您應該看到testlog.log文件。

相關問題