相关疑难解决方法(0)

slf4j&log4j2 maven设置查询

我在我的项目中使用log4j2和slf4j并使用maven进行构建.我正在使用以下pom文件(仅显示相关的依赖项),但我收到下面复制的错误与此pom文件 - 任何想法我需要添加/删除以使其工作.我已经访问了错误中的url以及log4j2依赖项页面,因此请不要只指向响应中的URL.

信息:

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.
Run Code Online (Sandbox Code Playgroud)

pom文件

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <slf4j.version>1.7.7</slf4j.version>
</properties>

   <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>


    <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.2.0</version>
    </dependency>

     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0.1</version>
     </dependency>

     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0.1</version> 
     </dependency>
Run Code Online (Sandbox Code Playgroud)

更新: 我在我的pom文件中添加了以下依赖项,我在mavenrepository中看到了jar - 虽然我在运行mvn clean/install时仍然看到相同的消息

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.0.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

java logging slf4j maven log4j2

21
推荐指数
2
解决办法
3万
查看次数

为什么在使用 slf4j 时排除公共日志记录?

我正在构建一个非常简单的应用程序,以便我可以理解 slf4j、桥接库、日志记录实现等。我的应用程序依赖于 slf4j,它使用 logback 进行日志记录实现。此外,它还引入了一个包含 commons-logging 库的库。

应用程序依赖项:

  dependencies {
    compile project(':library-with-jcl')

    compile group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.25'
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
    compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}
Run Code Online (Sandbox Code Playgroud)

库依赖项:

dependencies {
  compile group: 'commons-logging', name: 'commons-logging', version: '1.2'
}
Run Code Online (Sandbox Code Playgroud)

当我包含时jcl-over-slf4j,库将按预期通过 JCL 输出其日志记录。当我执行includejcl-over-slf4j时,任何通过 JCL 记录器进行的日志记录都会被 slf4j 拾取并重定向到 logback。

我一直在互联网上阅读文章,这些文章说commons-logging如果我的应用程序依赖于 slf4j 和依赖于 JCL 的库,我必须排除依赖项。然而,这似乎没有必要,我不明白为什么。在什么情况下我必须排除 JCL 依赖性?我这里的例子是否太简单而无法暴露潜在的问题?

此外,我没有看到必须排除的建议,例如,如果我使用 log4j 桥,则依赖于它的库中的 log4j 依赖项。为什么不?JCL是特例吗?

java logging slf4j

3
推荐指数
1
解决办法
3724
查看次数

标签 统计

java ×2

logging ×2

slf4j ×2

log4j2 ×1

maven ×1