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
- jcl-over-slf4j-1.7.7.jar
<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
,这是一个打字错误。我还有你上面提到的所有图书馆。考虑到这一点,我应该怎么做才能使这些级别正常工作呢?我有所有这些依赖项。但只有致命
和错误
级别起作用