2014-09-04 114 views
1

這很奇怪,但僅僅是致命的&即使指定TRACE級別,ERROR級別也適用於我。jcl-over-slf4j:設置日誌記錄級別howto

LoggingTest.class:

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.junit.Test; 

public class SLF4JTest { 

    private static Log _LOG = LogFactory.getLog(SLF4JTest.class); 

    @Test 
    public void test() { 
     _LOG.fatal("Fatal works!"); //works 
     _LOG.error("Error works!"); //works 
     _LOG.warn("Warn works!"); //doesn't work 
     _LOG.info("Info works!"); //doesn't work 
     _LOG.debug("Debug works"); //doesn't work 
     _LOG.trace("Trace works"); //doesn't work 
    } 
} 

log4j.properties:

log4j.rootLogger=TRACE, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS} 
+0

這可能是因爲你的類路徑上有slf4j-simple。您確定轉換模式已應用嗎?如果不是,那是因爲slf4j-簡單。 – 2014-09-04 20:20:04

+0

看起來你使用的是公用日誌而不是slf4j。它可能使用一些默認級別的公共日誌記錄,並不尊重你的slf4j配置(因爲它應該...因爲它們是不同的日誌框架) – coffeeaddict 2014-09-04 20:23:38

+0

@ErikPragt也許,不知道如何檢查。那麼你能告訴我如何檢查和如何解決? – 2014-09-05 05:38:44

回答

3

有可能是在你的項目中的一些錯誤。

  • 首先,如果你想使用SLF4J到你的代碼,你必須改變你的實例的類型:

    // Instance of SLF4J 
    private static final org.slf4j.Logger _LOG = 
         org.slf4j.LoggerFactory.getLogger(SLF4JTest.class); 
    
  • 其次必須slf4j.properties文件重命名爲log4j.properties

  • 第三,你需要添加以下庫:

    • SLF4J-API-1.7.7.jar
    • SLF4J-log4j12-1.7.7.jar
    • 的log4j-1.2.17 .JAR

但是,如果你真的想使用共享日誌記錄,增添了一分(本替換共享記錄-1.1.3.jar):

  • JCL-過SLF4J-1.7.7.jar
+0

感謝您的回答。我只需要登錄Hadoop代碼,所以我認爲我需要'Commons Logging'。我有'log4j.properties'文件而不是'slf4j.properties',這是一個錯字。我還有上面提到的所有這些圖書館。因此,考慮到這一點,我應該怎麼做才能讓這些關卡工作? – 2014-09-05 05:37:35

0

如果你想使用共記錄庫,你應該有記錄的僅依賴在你的pom.xml如下圖所示:

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
</dependency> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 

也要照顧一下log4.properties文件的位置。對於測試,它應該位於src/test/resources文件夾中。對於應用程序執行,它應該存儲在src/main/resources文件夾中。

+0

我有所有這些依賴關係。但只有「致命」和「錯誤」等級才起作用 – 2014-09-08 04:43:43