SLF4J:类路径包含多个SLF4J提供者

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

我有下一个gradle配置:

configurations {
    all {
        // Exclude Spring's default logging framework
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
        exclude group: 'ch.qos.logback', module : 'logback-access'
        // exclude group: 'ch.qos.logback', module : 'logback-classic'
    }
}

我还有下一个依赖项:

// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
    testImplementation 'ch.qos.logback:logback-classic:1.5.6'

因为我需要一些实用程序,比如

private ListAppender<ILoggingEvent> listAppender = new ListAppender<>();

为此,我需要导入:

import ch.qos.logback.core.read.ListAppender;
import io.athena.th.adapter.JwtPX.SessionData;

做这样的事情

Logger fooLogger = (Logger) LoggerFactory.getLogger(HandleExceptionUtil.class); // 创建并启动一个ListAppender listAppender.start(); // 将追加器添加到记录器 fooLogger.addAppender(listAppender);

如你所见,我评论过:

// exclude group: 'ch.qos.logback', module : 'logback-classic'

我收到错误:

SLF4J: Class path contains multiple SLF4J providers.
SLF4J: Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@6c49ea0c]
SLF4J: Found provider [org.apache.logging.slf4j.SLF4JServiceProvider@417bfebd]
SLF4J: See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.

但是如果我取消注释此排除,我将不会拥有 ch.qos.logback 功能。

有什么建议吗我该如何解决这个问题?

谢谢!

spring gradle slf4j
1个回答
0
投票

如果你想保留Logback,你应该找到哪个依赖包含

org.apache.logging.slf4j.SLF4JServiceProvider
。事实可能证明您只需排除单个依赖项。

如果没有,您可以随时设置系统属性

slf4j.provider
以选择您喜欢的日志框架实现,例如。 g。
slf4j.provider=ch.qos.logback.classic.spi.LogbackServiceProvider

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