簡體   English   中英

JUnit測試期間重復的log4j輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM