无法在maven项目中使用logback版本1.5.3

问题描述 投票:0回答:1

我创建了一个简单的 Maven 项目,其中添加了 logback-classic、logback-core 版本 1.5.3 和 slf4j-api 2.0.12 以及 JDK11。但是当我运行主类时,我收到此警告/错误消息。

**SLF4J(W):未找到 SLF4J 提供程序。 SLF4J(W):默认为无操作(NOP)记录器实现 SLF4J(W):请参阅 https://www.slf4j.org/codes.html#noProviders 了解更多详细信息。 你好世界! **

文件夹结构: enter image description here

在pom.xml中我添加了logback-classic、logback-core版本和slf4j-api的依赖。

pom.xml

<?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>com.logbacklearn</groupId>
  <artifactId>mavenproj</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>mavenproj</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
 
 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.12</version>
</dependency>
   
<dependency>
    <groupId>ch.qos.logback.access</groupId>
    <artifactId>common</artifactId>
    <version>2.0.0</version>
  </dependency> 

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.5.3</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.5.3</version>
    <scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-examples -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-examples</artifactId>
    <version>1.2.13</version>
</dependency>

  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

我的 logback.xml 看起来像

<?xml version="1.0" encoding="UTF-8" ?>
 
<configuration scan="true" scanPeriod="3 seconds">
 
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
 
  <appender name="STDOUT"
            class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
        %d{HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %msg%n
</pattern>
</layout>
</appender>
 
  <appender name="FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>logFile.log</File>
<rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
        logFile.%d{yyyy-MM-dd_HH-mm}.log.zip
</FileNamePattern>
</rollingPolicy>
 
    <layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
        %d{HH:mm:ss,SSS} [%thread] %-5level %logger{32} - %msg%n
</Pattern>
</layout>
</appender>
 
  <root>
<level value="DEBUG"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
 
  <!--<include file="/tmp/logback-demo.xml"/>-->
 
</configuration>

我的主课看起来像:

package com.logbacklearn.mavenproj;

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

/**
 * Hello world!
 *
 */
public class App 
{
    static org.slf4j.Logger logger = LoggerFactory.getLogger(App.class);

    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        logger.info("logger is working");
    }
}

当我调试记录器的值时,它向我显示 NOPLogger,即使我添加了 logback-core、logback-classic 的依赖项。 enter image description here

控制台没有打印日志?我是否缺少新版本的 logback 或 slf4j 的某些内容?

我尝试过一些事情,例如再次执行 mvn clean install 。全新创建目标文件夹。 不知何故,它没有识别 logback-classic jar 的依赖关系。

我也是第一次看到这个,maven 依赖项下的 classic 和 junit jar 是灰色的。 这背后的原因是什么? enter image description here

maven logback slf4j logback-classic
1个回答
0
投票

在您的 pom.xml 中,logback-classic 依赖项具有 test 范围。因此,它不在您的应用程序的类路径上。删除测试范围即可解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.