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

Уровень ведения журнала под управлением maven surefire

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

У меня есть файл logging.properties в src/test/resources/logging.properties

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

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

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

...

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

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

4b9b3361

Ответ 1

Вам нужно указать обработчики в файле ведения журнала

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

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

Ответ 2

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

    <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>

Ответ 3

Похоже, что он еще не доступен под maven?:

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

Также, когда я настраиваю pom для использования пользовательского файла свойств 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>
   ...

исчезновение журнала...

Ответ 4

попробуйте

${build.testOutputDirectory}/logging.properties

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

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

Ответ 5

Я рассматривал эту точную проблему, но не хотел менять файл конфигурации проекта (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, описанной здесь отлично подходит для изоляции ошибок и ошибок.