logback-test.xml и многомодульный проект maven - PullRequest
6 голосов
/ 27 февраля 2012

В моем проекте maven у меня есть один модуль в зависимости от другого, и это тестовый код / ​​ресурсы:

...
<scope>test</scope>
<type>test-jar</type>
...

Теперь оба модуля имеют свои собственные logback-test.xml , каждый из которых имеет определенную конфигурацию для запуска тестов в этом конкретном модуле. Однако, как и ожидалось, при запуске тестов в дочернем модуле logback жалуется с предупреждением о том, что в пути есть несколько logback-test.xml , И делает это с конфигурацией ведения журнала по умолчанию:

08:44:17,528 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
08:44:17,530 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:path/to/my/project/module2/logback-test.xml]
08:44:17,532 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs multiple times on the classpath.
08:44:17,533 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [file:/C:/path/to/my/project/module2/logback-test.xml]
08:44:17,533 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [file:/C:/path/to/my/project/module1/logback-test.xml]
08:44:17,636 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
08:44:17,647 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
08:44:17,653 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
08:44:17,692 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
08:44:17,764 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN
08:44:17,764 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
08:44:17,765 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.myproject] to TRACE
08:44:17,765 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [ch.qos.logback] to OFF
08:44:17,768 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@5b0a485c - Registering current configuration as safe fallback point

Интересно, как я мог решить эту проблему ... Я хочу сохранить несколько конфигураций для каждого модуля; Я думаю, я не могу исключить один файл из classpath; Я действительно хочу вернуться, чтобы заткнуться о вещах, которые я знаю. Как вы можете видеть из последних двух строк, у меня в моей конфигурации есть весь пакет logback с «OFF», но он все еще продолжает регистрироваться после этой точки. Шаблон журнала также отличается от того, который я настроил в любой конфигурации.

Logback настроен и используется в коде через SLF4J.

При выполнении тестов в родительском модуле ничего из этого не регистрируется (ни INFO, ни WARN-сообщения), поэтому я не могу винить в этом что-то еще, кроме странного поведения Logback.

1 Ответ

5 голосов
/ 27 февраля 2012

Вы можете исключить logback-test.xml из тестовой банки

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                    <configuration>
                    <excludes>
                        <excludes>logback-test.xml</excludes>
                    </excludes>
                    </configuration>
                </execution>
            </executions>               
        </plugin>   

Или (я не пробовал этого) вы можете использовать соглашение об именах logback-test-project.a.xml, logback-test-project.b.xml и т. Д. И настраивать верный запуск в каждом проекте по-разному с помощью -Dlogback.configurationFile=logback-test-project.a.xml.

...