关于java:slf4j和log4j2 Maven设置查询

slf4j & log4j2 maven setup query

我在我的项目中使用log4j2和slf4j并使用maven进行构建。 我正在使用以下pom文件(仅显示了相关依赖项),但是我在此pom文件的下面复制了错误-我需要添加/删除所有内容才能使其正常工作。 我已经访问了错误中的url以及log4j2依赖项页面,因此请不要仅指向响应中的URL。

信息:

1
2
3
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.

pom文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <slf4j.version>1.7.7</slf4j.version>
</properties>

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


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

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

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

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

1
2
3
4
5
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        log4j-slf4j-impl</artifactId>
        <version>2.0.1</version>
    </dependency>

您似乎在pom文件中缺少以下内容。

1
2
3
4
5
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    log4j-slf4j-impl</artifactId>
    <version>2.0.1</version>
</dependency>


您的log4j2配置正确(在POM端),但是您从未对slf4j说它应该写入的位置(后端部分)。

您应该将其添加到您的pom文件中

1
2
3
4
5
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    log4j-slf4j-impl</artifactId>
    <version>2.0.1</version>
</dependency>

这是Log4j 2 SLF4J绑定。根据Log4j 2 SLF4J绑定文档,Log4j 2 SLF4J绑定允许编码为SLF4J API的应用程序使用Log4j 2作为实现

如果仍然无法正常工作,则可能是Eclipse问题,因为已知Eclipse m2e对于slf4j很奇怪。根据来自SO SLF4J的详细帖子:无法加载类" org.slf4j.impl.StaticLoggerBinder"。错误的解决方法可能是使用外部Maven进行构建。


除了log4j-slf4j-impl依赖性外,您还需要slf4j-ext依赖性。

参见http://logging.apache.org/log4j/2.x/log4j-slf4j-impl/dependencies.html


我认为您的第一个pom.xml是正确的,(依赖关系是正确的),也许配置文件的位置是错误的

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      <dependency>
        <groupId>org.slf4j</groupId>
        slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        log4j-api</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        log4j-core</artifactId>
        <version>2.7</version>
    </dependency>