Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jcl-over-slf4j:设置日志记录级别howto_Java_Logging_Log4j_Slf4j - Fatal编程技术网

Java jcl-over-slf4j:设置日志记录级别howto

Java jcl-over-slf4j:设置日志记录级别howto,java,logging,log4j,slf4j,Java,Logging,Log4j,Slf4j,这很奇怪,但只有致命错误级别对我有效,即使我指定了跟踪级别 日志测试。类别: 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

这很奇怪,但只有致命错误级别对我有效,即使我指定了跟踪级别

日志测试。类别:

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.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}
log4j.属性:

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.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}

您的项目中可能有一些错误

  • 首先,如果要在代码中使用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
但是,如果您真的想使用Commons日志记录,请再添加一个(将Commons-Logging-1.1.3.jar替换为此):

  • jcl-over-slf4j-1.7.7.jar

如果您想使用通用日志记录库,您应该在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>

公用记录
公用记录
1.1.1
log4j
log4j
1.2.17

还要注意log4.properties文件的位置。对于测试,它应该位于src/test/resources文件夹中。对于应用程序执行,它应该存储在src/main/resources文件夹中

这可能是因为在类路径的某个地方有slf4j simple。您确定应用了转换模式吗?如果不是,那是因为slf4j-simple。看起来您使用的是commons日志,而不是slf4j。它可能使用了一些默认的通用日志级别,并且不尊重您的slf4j配置(因为它们是不同的日志框架,所以它不应该这样做)@ErikPragt可能不知道如何检查。那么你能告诉我如何检查和解决吗?@咖啡瘾君子不知道如何检查。所以,你能告诉我如何检查和如何解决吗?你能提供你的项目中存在的任何日志依赖的版本吗?谢谢你的回答。我只需要记录Hadoop代码,所以我想我需要
Commons日志记录
。我有
log4j.properties
文件,而不是
slf4j.properties
,这是一个打字错误。我还有你上面提到的所有图书馆。考虑到这一点,我应该怎么做才能使这些级别正常工作呢?我有所有这些依赖项。但只有
致命
错误
级别起作用