Подтвердить что ты не робот

Отключение журналов Log4J во время фазы тестирования maven

Журналы трассировки и отладки могут быть полезны при разработке в среде IDE, но во время сборки я нахожу эти строки весьма тревожными и запутываю отчет, распечатанный maven или другими инструментами сборки.

Было бы неплохо, если log4j выполнил системное свойство, например -Dlog4j.rootLogger=OFF 1 чтобы использовать с maven или что-то, что не требует изменений в файлах проекта. Я знаю, что могу указать -Dlog4j.configuration=alternateconfig.props 2 но я прошу здесь узнать, нашел ли кто-нибудь более разумный способ отключить ведение журнала во время процесса сборки с минимальным ручным вмешательством. То есть некоторый Java-класс, определяющий maven как вызывающий, который отключает log4j или другие интеллектуальные решения.

Любые подсказки?

Примечания:

[1]: уже пробовал, и он не работает.

[2]: это очень хорошо, но, похоже, он не работает с maven (возможно, верный пропуск пропускает его)

4b9b3361

Ответ 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 не инициализируется, но, кроме того, он работает.