Spring Boot 2.0.5-ActiveGrade 5.14.0与Gradle设置记录程序有关的问题

时间:2018-10-05 00:22:48

标签: spring-boot gradle logback-classic

将activemq添加到build.gradle后,出现以下运行时错误。

compile("org.apache.activemq:activemq-all:5.14.0")

我尝试排除模块,但是这似乎并没有排除我期望的logback。请告知我可以做些什么来排除回发。另一个说明,这是一个kotlin应用程序,但是我认为这不相关。

compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
{
            exclude module: "spring-boot-starter-logging"
            exclude module: "logback-classic"
}

这里是例外:

Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/C:/Users/z037640/.gradle/caches/modules-2/files-2.1/org.apache.activemq/activemq-all/5.14.0/858a3bd95d20e7a8949006cdb50a7c362f8825ec/activemq-all-5.14.0.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml Object of class [org.slf4j.impl.Log4jLoggerFactory] must be an instance of class ch.qos.logback.classic.LoggerContext

1 个答案:

答案 0 :(得分:1)

如果您不想将logback用作记录器,则只需将其从所有配置中排除,如下所示:

configurations.all {
    exclude group: "ch.qos.logback"
}

dependencies {
   // ... all your dependencies here.
}

在github项目示例中:您在buildscript块中声明了排除规则,这是错误的。您需要在此块之外配置这些排除项(=>与repositoriesdependencies块处于同一级别)

注意,导致日志记录问题的根本原因是spring-bootactive-mq-all依赖项都在其传递性依赖项中提供了Slf4j绑定实现,因此您需要排除{{ 1}}(请参阅上面的解决方案)或logback的实现(似乎更复杂:请参见https://stackoverflow.com/a/11786595/6899896