提问者:小点点

maven中无法避免SLF4J错误


我知道以前有人问过这个问题,但没有一个答案对我有用。我得到一个错误:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

我已经准备好尝试使用:

  • 仅限slf4j api
  • slf4j api和log4j
  • slf4j api、jcl-over-slf4j、log4j
  • 仅限slf4j-log4j12
  • slf4j-log4j12和log4j
  • 仅logback经典版
  • logback classic和logback core
  • slf4j api、logback classic和logback core
  • log4j api 2、log4j core 2、log4j-slf4j-impl
  • log4j-over-slf4j,jul-to-slf4j,logback-classic
  • slf4j api,logback经典

对于我用教程/答案版本和最新版本(mvn版本:使用最新版本)尝试过的每一个

因为有一些答案告诉你在你的类路径上只能有一个库,我说我已经试过了。

我还使用了log4j。属性insidesrc/main/resources/如下:

# Set root logger level and appender name.
log4j.rootLogger = ALL, file

# Specify appenders.
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

# Configure console appender.
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %m%n

# Configure file appender.
log4j.appender.file.File = /webapp/logs/web.log
log4j.appender.file.DatePattern = '.'yyyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %m%n

回显。xml位于同一位置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>silkroad.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.base22" level="ALL"/>

    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

这是我试用过的代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {

    static Logger log = LoggerFactory.getLogger(Test.class);

    public static void main(String[] args) {
        log.debug("Testing the log");

    } 
}

从我使用的登录依赖中分离:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

我已经学习了一些教程(12~15),使用了不同的方法使LogFacade工作,包括那些在你的网站上没有成功的教程。


共1个答案

匿名用户

此配置适用于我的项目。我使用log4j 1,一个标准的log4j.xml文件。我还必须从任何包含它的依赖项中排除共享日志,例如,如图所示。

    <properties>
        <spring.version>4.0.0.RELEASE</spring.version>
        <log4j.version>1.2.17</log4j.version>
        <slf4j.version>1.7.5</slf4j.version>
    </properties>

    <dependencies>
         <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        ....
    </dependencies>