Отключение журналов Log4J во время фазы тестирования maven
Журналы трассировки и отладки могут быть полезны при разработке в среде IDE, но во время сборки я нахожу эти строки весьма тревожными и запутываю отчет, распечатанный maven или другими инструментами сборки.
Было бы неплохо, если log4j выполнил системное свойство, например -Dlog4j.rootLogger=OFF
1 чтобы использовать с maven или что-то, что не требует изменений в файлах проекта.
Я знаю, что могу указать -Dlog4j.configuration=alternateconfig.props
2 но я прошу здесь узнать, нашел ли кто-нибудь более разумный способ отключить ведение журнала во время процесса сборки с минимальным ручным вмешательством. То есть некоторый Java-класс, определяющий maven как вызывающий, который отключает log4j или другие интеллектуальные решения.
Любые подсказки?
Примечания:
[1]: уже пробовал, и он не работает.
[2]: это очень хорошо, но, похоже, он не работает с maven (возможно, верный пропуск пропускает его)
Ответы
Ответ 1
Как объясняется @artbristol
(комментарий к вопросу), это можно настроить в surefire.
Это можно сделать в pom.xml:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<forkMode>always</forkMode>
<systemPropertyVariables>
<log4j.configuration>file:${basedir}/etc/log4j-silent.properties</log4j.configuration>
</systemPropertyVariables>
</configuration>
</plugin>
Затем, имея файл ${basedir}/etc/log4j-silent.properties
со следующими настройками, трюк:
log4j.rootLogger=OFF
Лог4j полностью отключается во время тестовых прогонов в maven, и все нормально работает в среде IDE.
Лучшим решением было бы не иметь дополнительный файл конфигурации; но не может найти его до сих пор.
Ответ 2
Укажите тестовый файл конфигурации log4j без приложения.
Например, если у вас есть log4j.properties в src/main/resources
, затем скопируйте его в src/test/resouces
и либо удалите appender, либо установите уровень журнала на фатальный.
Ответ 3
На основе предыдущих ответов я использую:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<forkMode>always</forkMode>
<argLine>-Dlog4j.configuration=</argLine>
</configuration>
</plugin>
Выход Maven показывает предупреждение о том, что log4j не инициализируется, но, кроме того, он работает.