2010-10-15 2 views
20

Я не могу отрегулировать уровень ведения журнала java. Я использую maven surefire (тест mvn) и пытаюсь настроить из INFO по умолчанию, например. УТОНЧЕННАЯ.Уровень ведения журнала под maven surefire

У меня есть logging.properties файл под SRC/Тест/ресурсы/logging.properties

после компиляции, я вижу по целевым/тест-классов, я вижу logging.properties файл с предполагаемой конфигурации:

java.util.logging.ConsoleHandler.level = УТОНЧЕННАЯ

javax.enterprise.system.container.ejb.level = ВЫСОКОЕ

...

однако консольный выход из стеклянной рыбы имеет только сообщения уровня INFO/SEVERE.

Где я ошибся? или это еще одна боль в прикладе с maven?

+0

Я немного смущен здесь. Как в них вписывается стеклянная рыба? Я думаю, что вы, вероятно, путаетесь с журналом из стекловолокна и ведением журнала модуляции maven. Какая структура - использование maven для ведения журнала? – drekka

+0

Я отлаживаю единичный тест, который использует встроенный контейнер в стеклянной платке v3. в соответствии с: http://forums.java.net/jive/thread.jspa?messageID=395759, в ответ «Марина Ваткина», это ключ для вывода сообщений FINE для контейнера EJB ... На мой вопрос мой вопрос: моя настройка правильная для ведения журналов java? Или нужна ли дополнительная настройка? - не только для этого конкретного экземпляра, но позволяет сказать, что у меня есть класс com.something.Main, и я хочу выводить FINEST-сообщения для него ... – Dzhu

ответ

8

Необходимо указать обработчики в файле регистрации

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler 

, то он должен работать

3

Похоже, его не возможно еще под мавена ?:

http://jira.codehaus.org/browse/MNG-2570

Кроме того, когда я настроить ПОМ использовать пользовательские свойства java.util.logging файл следующим образом:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
    <systemProperties> 
     <property> 
     <name>java.util.logging.config.file</name> 
     <value>${project.build.directory}/test-classes/logging.properties</value> 
     </property> 
    </systemProperties> 
    ... 

каротаж исчезает ...

+0

Я получаю только регистрацию. Я могу контролировать, если я укажу местоположение ведения журнала. файл свойств с системным свойством. Ваш способ выражения свойства работает для меня, как и 'src/test/resources/logging.properties'. – sjlevin

3

попробовать

${build.testOutputDirectory}/logging.properties 

Кроме того, я указываю этот материал в командной строке с surfire-арг.

<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine> 
14

Я попытался установить java.util.logging.config.file в переменной окружения MAVEN_OPTS, которая не работает, но, наконец, получил это работает, поставив эту собственность системы в pom.xml (и, конечно, создавая соответствующие logging.properties в SRC/тест/ресурсы):

<plugins> 
     <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <systemProperties> 
      <property> 
       <name>java.util.logging.config.file</name> 
       <value>src/test/resources/logging.properties</value> 
      </property> 
      </systemProperties> 
     </configuration> 
     </plugin> 
    </plugins> 
+0

Установка '-Djava.util.logging.config.file' в командной строке maven не работала для меня, но это произошло. – sjlevin

+0

Поскольку плагин surefire не поддерживает все свойства системы, которые вы передали maven, то командная строка для фактического исполнительного органа тестирования –

1

Я смотрел на этот точный вопрос, но не хотите изменить файл конфигурации проекта (pom.xml) каждый раз, когда мне нужно конкретную регистрацию на контрольная работа.

Свойство -D работает из командной строки maven.

Таким образом, вы можете выбрать файл конфигурации протоколирования из командной строки:

mvn -Djava.util.logging.config.file=`enter filename here` test 

Если вы используете общий знаменатель на уровне .level=FINEST быть известно, что третья сторона каротаж также появится на этом уровне.

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

У меня есть много бревенчатых линий от com.google.inject .....

aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Instance member validation: 3ms 
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Provider verification: 1ms 
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Static member injection: 1ms 

Так я добавляю:

com.google.inject.level=INFO 

в файл. Помните, что установка уровня является рекурсивной для всех подклассов. Таким образом, com.level=NONE отключит все протоколирование для всех регистраторов из домена com.

Сочетание этого с функцией выбора теста -Dtest=... в плагине surefire, описанной here, очень подходит для изоляции ошибок и ошибок.

Смежные вопросы