slf4j 找不到 log4j2 jar
slf4j does not find log4j2 jars
我知道 SLF4J 使用 Log4j2 作为记录器实现应该很容易。
You just need to add the jars to the classpath.
我以为我这样做了,但我仍然得到
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
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.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j18-impl</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
然后摘自 .classpath
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/logging/log4j/log4j-slf4j18-impl/2.14.0/log4j-slf4j18-impl-2.14.0.jar" sourcepath="M2_REPO/org/apache/logging/log4j/log4j-slf4j18-impl/2.14.0/log4j-slf4j18-impl-2.14.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/logging/log4j/log4j-api/2.14.0/log4j-api-2.14.0.jar" sourcepath="M2_REPO/org/apache/logging/log4j/log4j-api/2.14.0/log4j-api-2.14.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/logging/log4j/log4j-core/2.14.0/log4j-core-2.14.0.jar" sourcepath="M2_REPO/org/apache/logging/log4j/log4j-core/2.14.0/log4j-core-2.14.0-sources.jar"/>
然后,查看 lib 文件夹
$ find ./ -name "*slf4*.jar"
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-slf4j18-impl-2.14.0.jar
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-api-1.7.30.jar
$ find ./ -name "*log4j*.jar"
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-slf4j18-impl-2.14.0.jar
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-api-2.14.0.jar
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-core-2.14.0.jar
我错过了什么?
我需要添加 log4j2 config xml file 吗?
但是我没有得到corresponding error message。
我正在使用
- Eclipse 版本:2020-09 (4.17.0)
- Apache Maven 3.6.3
和 maven-war-plugin
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<!-- annotations instead of web.xml -->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
这是因为您使用的是 slf4j 1.7.*
但您使用的是 logj4j-slf4j18-impl
,它应该与 slf4j 1.8 一起使用(尚未发布或更改为目前处于 alpha 的版本 2.0.0版本)。
您需要从
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j18-impl</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
到
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
为了兼容你在项目中使用的slf4j
我知道 SLF4J 使用 Log4j2 作为记录器实现应该很容易。
You just need to add the jars to the classpath.
我以为我这样做了,但我仍然得到
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
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.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j18-impl</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
然后摘自 .classpath
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/logging/log4j/log4j-slf4j18-impl/2.14.0/log4j-slf4j18-impl-2.14.0.jar" sourcepath="M2_REPO/org/apache/logging/log4j/log4j-slf4j18-impl/2.14.0/log4j-slf4j18-impl-2.14.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/logging/log4j/log4j-api/2.14.0/log4j-api-2.14.0.jar" sourcepath="M2_REPO/org/apache/logging/log4j/log4j-api/2.14.0/log4j-api-2.14.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/logging/log4j/log4j-core/2.14.0/log4j-core-2.14.0.jar" sourcepath="M2_REPO/org/apache/logging/log4j/log4j-core/2.14.0/log4j-core-2.14.0-sources.jar"/>
然后,查看 lib 文件夹
$ find ./ -name "*slf4*.jar"
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-slf4j18-impl-2.14.0.jar
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-api-1.7.30.jar
$ find ./ -name "*log4j*.jar"
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-slf4j18-impl-2.14.0.jar
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-api-2.14.0.jar
./target/my-app-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-core-2.14.0.jar
我错过了什么?
我需要添加 log4j2 config xml file 吗?但是我没有得到corresponding error message。
我正在使用
- Eclipse 版本:2020-09 (4.17.0)
- Apache Maven 3.6.3
和 maven-war-plugin
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<!-- annotations instead of web.xml -->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
这是因为您使用的是 slf4j 1.7.*
但您使用的是 logj4j-slf4j18-impl
,它应该与 slf4j 1.8 一起使用(尚未发布或更改为目前处于 alpha 的版本 2.0.0版本)。
您需要从
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j18-impl</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
到
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.0</version>
<scope>runtime</scope>
</dependency>
为了兼容你在项目中使用的slf4j