加载 class org.slf4j.impl.StaticLoggerBinder 失败,即使 StaticLoggerBinder 在 Maven-Rep 中

Failed to load class org.slf4j.impl.StaticLoggerBinder even though StaticLoggerBinder is in Maven-Rep

我正在尝试使用 slf4j-Logger-Functions,但总是遇到相同的错误:

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.

我已经尝试了常见的解决方案,正如您在图片中看到的那样,"StaticLoggerBinder" 已加载到目录中,但错误仍然存​​在。你知道为什么吗?

package de.stefan.test;

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

public class Test {

    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Test.class);
        logger.info("This is how you configure Java Logging with SLF4J");
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.stefan</groupId>
    <artifactId>stefan</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
        </dependency>

    </dependencies>

</project>

Project structure

当您 运行 程序时,

slf4j-simple 不是您的类路径。把它放在你的类路径中,比如 java -classpath ./lib/* YourProgram。其中 lib 包含您的 jar 文件。

只需确保您在 pom 中具有以下 4j 依赖项,并添加 log4j.properties/xml 和所需的附加程序,即 class 路径中的控制台 or/and 文件。

  1. 根据需要在属性中提及版本,最近的更好-

    2.13.3

   <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${log4j.version}</version>
      <scope>runtime</scope>
    </dependency>

  1. 示例 Log4j 配置属性文件可以是这样的-

 status = error
name= properties_configuration

# Give directory path where log files should get stored
#property.basePath = E:\AppTest_logs\

# ConsoleAppender will print logs on console
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.target = SYSTEM_OUT
appender.console.layout.type = PatternLayout

appender.file.type = File
appender.file.name = STDOUT
appender.file.filename = logs/AppsConsole.log
appender.file.layout.type = PatternLayout
appender.console.filter.threshold.type = ThresholdFilter
appender.console.filter.threshold.level = error

# Specify the pattern of the logs
appender.console.layout.pattern = %highlight{ [%p] %d{dd MMM yyyy HH:mm:ss,SSS} [%t] %x %c %M - %m%n}{FATAL=white, ERROR=Blink red, WARN=Underline yellow, INFO=Bright white, DEBUG=Bright green, TRACE=blue}
appender.file.layout.pattern = %d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n

# RollingFileAppender will print logs in file which can be rotated based on time or size


# Mention package name here in place of example. Classes in this package or subpackages will use ConsoleAppender and RollingFileAppender for logging
logger.example.name = com.threeylos.zapizook
logger.example.level = info
logger.example.additivity = false
logger.example.appenderRef.rolling.ref = fileLogger
logger.example.appenderRef.console.ref = consoleLogger

# Configure root logger for logging error logs in classes which are in package other than above specified package

rootLogger.level = info
rootLogger.additivity = false
#rootLogger.appenderRef.rolling.ref = fileLogger
rootLogger.appenderRef.console.ref = consoleLogger