[英]Duplicated log4j output during JUnit test
我們使用以下log4j.properties
文件實現了一個log4j
控制台記錄器:
# Set root logger level to info and its only appender to default.
log4j.rootCategory=INFO, default
# default is set to be a ConsoleAppender.
log4j.appender.default=org.apache.log4j.ConsoleAppender
# default uses PatternLayout.
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.logger.org.hibernate=error
在eclipse中正常執行程序時,一切正常,但是當我們啟動一個JUnit
測試(該程序也使用logger調用程序的一部分)時,我們總是會在eclipse控制台上獲得重復的logger輸出。 盡管它不會影響我們的測試,但是如果不重復記錄器信息,那么使我們更容易閱讀它們。
這是我們首次配置log4j
的方式:
public ConsoleTextLogger(final Class<?> clazz) {
super();
this.logger = Logger.getLogger(clazz.getName());
// loads the configuration file and configures the log4j logging framework
if (LOGGERLOGGER == null) {
URL url = getClass().getResource("log4j.properties");
PropertyConfigurator.configure(url);
}
}
這是我們在一個JUnit類中使用記錄器的方式:
public class TestClass1 {
@BeforeClass
public static void setup() {
TestSetupUtility.loadPath();
}
// TESTS
}
TestSetupUtility
設置了我們為不同測試所需的一切。
public class TestSetupUtility {
/**
* Class specific Logger.
*/
protected static final ConsoleTextLogger LOGGER = new ConsoleTextLogger(TestSetupUtility.class);
}
關於可能導致這種現象的原因有什么想法,為什么只有在運行JUnit
測試時才知道? 在此先感謝您的幫助或指點。
好的,我現在發現了問題...在JUnit測試中,我將記錄器級別切換為Level.DEBUG
,並將負責切換記錄器級別的方法稱為以下方法BasicConfigurator.configure();
Level.DEBUG
這將創建第二個基本記錄器。 刪除此方法調用后,重復的日志記錄消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.