У меня есть задача Gradle для запуска теста JMH:
task benchmark(type: JavaExec) {
dependsOn compileTestJava
classpath = sourceSets.test.runtimeClasspath
main = "com.example.Benchmark"
}
Benchmark
- это просто точка входа в JMH, расположенная по адресу src\test\java\com\example
(написано на Kotlin, но здесь это не должно иметь значения):
object Benchmark {
@JvmStatic
fun main(args: Array<String>) {
org.openjdk.jmh.Main.main(args)
}
}
Чтобы не искажать мой тест, я хочу запретить вход в консоль. Поэтому я создал log4j2.xml
файл конфигурации под src\test\resources
.
В моем log42.xml
я закомментировал каждую ссылку на консольный аппендер и даже закомментировал сам аппендер. Но я все еще получаю сообщения журнала на консоли, что означает, что моя конфигурация Log4j не эффективна, и вместо нее используется конфигурация по умолчанию. Это запасной вариант Log4j .
Если я добавлю следующий блок к описанному выше методу main
, все будет в порядке:
val log4Url = javaClass.classLoader.getResource("log4j2.xml")
val log4JConfigPath = Paths.get(log4Url.toURI())
println("classpath: " + log4JConfigPath.toAbsolutePath())
log4j2.xml
существует там, где я ожидаю (build\resources\test\log4j2.xml
). Поведение совпадает с именем файла log4j2-test-xml
). Файл конфигурации из src\main\resources
также игнорируется.
Я использую Gradle 4.7, если это имеет какое-либо отношение.
Что мне нужно сделать, чтобы Log4j использовал файл конфигурации из моего каталога тестовых ресурсов?