Почему при логировании возникает ошибка, что логгер не найден, если я добавил нужную зависимость

Меня давно волнует одна и та же возникающая с логгерами ошибка, но только сейчас руки дошли об этом написать. Вот эта ошибка:

SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.

Существует решение этой проблемы, которое заключается в том, что добавляются зависимости для логгера, но меня это решение не устраивает, потому что зависимость logback я добавил и так, к тому же в составе спринга тоже есть логгеры, а эта ошибка возникает у меня и там.

Вот такой код моего проекта:

<?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>org.aoizora</groupId>
    <artifactId>camel-app</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-core</artifactId>
                <version>4.6.0</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.5.6</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
    </dependencies>

</project>

Класс Main:

package aoizora;

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

public class Main
{
    public static void main(String[] args) throws Exception
    {
        CamelContext camel = new DefaultCamelContext();

        camel.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception
            {
                from("timer:foo")
                        .log("Hello, Camel");
            }
        });

        camel.start();

        Thread.sleep(10000);

        camel.stop();
    }
}

Как видно, в pom.xml добавлен логбэк, но ошибка возникает все равно. Хотя в этом видео https://www.youtube.com/watch?v=ZY3dJ3e9vDo зависимости те же самые, а ошибки нет.

Как избавиться от этой ошибки, чтобы было красиво?


Ответы (1 шт):

Автор решения: Alex Krass

У вас зависимость не включена в основное приложение, так как вы ей прописали область действия test, использовать только в запуске тестов. Удалите <scope>test</scope>, чтобы использовать её и в обычной сборке.

→ Ссылка