【问题标题】:jcl-over-slf4j: set logging level howtojcl-over-slf4j:设置日志记录级别 howto
【发布时间】:2014-09-07 16:43:00
【问题描述】:

这很奇怪,但只有 FATAL & ERROR 级别对我有用,即使我指定了 TRACE 级别。

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}

【问题讨论】:

  • 这可能是因为你的类路径中有 slf4j-simple。您确定应用了转换模式吗?如果不是,那是因为 slf4j-simple。
  • 看起来您使用的是公共日志记录而不是 slf4j。它可能使用一些默认级别进行公共日志记录,并且不尊重您的 slf4j 配置(因为它不应该......因为它们是不同的日志记录框架)
  • @ErikPragt 也许,不知道如何检查。那你能告诉我如何检查以及如何解决吗?
  • @coffeeaddict 不知道如何检查。那你能告诉我如何检查以及如何解决吗?
  • 能否提供您项目中存在的任何日志记录依赖项的版本?

标签: java logging log4j slf4j


【解决方案1】:

您的项目中可能存在一些错误。

  • 首先,如果你想在你的代码中使用 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 Logging,再添加一个(用这个替换 commons-logging-1.1.3.jar):

  • jcl-over-slf4j-1.7.7.jar

【讨论】:

  • 感谢您的回答。我只需要记录 Hadoop 代码,所以我想我需要Commons Logging。我有 log4j.properties 文件而不是 slf4j.properties ,这是一个错字。我也有你上面提到的所有这些库。那么考虑到这一点,我应该怎么做才能使这些关卡发挥作用?
【解决方案2】:

如果您想使用 common-logging 库,您应该在 pom.xml 中拥有 only 依赖项,如下所示:

<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 文件夹中。

【讨论】:

  • 我拥有所有这些依赖项。但只有FATALERROR 级别有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2011-07-26
相关资源
最近更新 更多