首页 > 解决方案 > Gradle 使用 SLF4J simple 进行测试,使用 Log4j12 进行运行时

问题描述

我在测试期间使用 slf4j 我想通过使用 slf4j simple 在控制台上查看日志输出。然后运行时将使用 log4j 配置。

通过像这样声明依赖项,我能够在 Maven 中做到这一点

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
    <scope>compile</scope>
</dependency>
<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>${slf4j.version}</version>
  <scope>test</scope>
</dependency>    
<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
  <scope>runtime</scope>
</dependency>

我尝试为 Gradle 做类似的事情

dependencies {
    compile "org.slf4j:slf4j-api:$SLF4J_VERSION"
    testCompile "org.slf4j:slf4j-simple:$SLF4J_VERSION"
    runtime "org.slf4j:slf4j-log4j12:$SLF4J_VERSION"
}

但是在构建过程中,我可以看到它仍在使用 Log4j12 实现。我该如何解决?

SLF4J: Class path contains multiple SLF4J providers.
SLF4J: Found provider [org.slf4j.log4j12.Log4j12ServiceProvider@4ad9cc78]
SLF4J: Found provider [org.slf4j.simple.SimpleServiceProvider@6e869e5e]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual provider is of type [org.slf4j.log4j12.Log4j12ServiceProvider@4ad9cc78]

标签: gradleslf4j

解决方案


你可以试试

gradle dependencies --configuration testRuntime

看看它来自哪里


推荐阅读