Gradle测试log4j.xml

时间:2018-01-09 00:05:32

标签: java gradle log4j2

很抱歉,如果这不是足够的信息,请通知gradle,如果需要更多信息,请与我们联系。 我在一个配置文件夹中有一个log4j2.xml,我在gradle.properties文件中定义。

project.ext.logConfigFile="./config/log4j2.xml"

我的项目结构

项目
SRC
测试
LIB
配置
log4j2.xml

现在当我运行gradle测试时,它说它无法找到log4j2配置。

这就是我的build.gradle文件的样子..

sourceSets {
    test {
        java {
            srcDirs = ["test"]
        }
    }
    main {
        java {
            srcDirs = ["src"]
        }
    }
}


test {
    testLogging {
        outputs.upToDateWhen {false}
        showStandardStreams = true
        events "PASSED", "STARTED", "FAILED", "SKIPPED"
        afterSuite { desc, result ->
            if (!desc.parent) { // will match the outermost suite
                println "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
      }
    }
  }
}

一直在浏览我在互联网上找到的东西,这就是“testLogging”部分中所有这些陈述的原因。但基本上,我有LOGGER.info()语句没有出现,因为它只是默认错误。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

我可以告诉gradle测试我的log4j2.xml的具体位置吗?像这样的东西?虽然我不认为这有用......

tasks.withType(Test) { 
     systemProperty 'log4j.configuration', logConfigFile
}

现在有点卡住了。谢谢!

2 个答案:

答案 0 :(得分:0)

只需将其放入src/test/resources即可。这在测试期间首先出现在类路径上。然后配置log4j从类路径加载,而不是文件路径;我认为这是默认行为

答案 1 :(得分:0)

相信我解决了这个问题,你只需要在sourceSets中定义资源的位置。它将在那里查找log4j2.xml。

sourceSets {
    test {
        java {
            srcDirs = ["test"]
        }
        resources {
            srcDirs = ["config"]
        }
    }
    main {
        java {
            srcDirs = ["src"]
        }
    }
}