我有下一个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 功能。
有什么建议吗我该如何解决这个问题?
谢谢!
如果你想保留Logback,你应该找到哪个依赖包含
org.apache.logging.slf4j.SLF4JServiceProvider
。事实可能证明您只需排除单个依赖项。
如果没有,您可以随时设置系统属性
slf4j.provider
以选择您喜欢的日志框架实现,例如。 g。 slf4j.provider=ch.qos.logback.classic.spi.LogbackServiceProvider