Ответ 1
Вам нужно указать обработчики в файле ведения журнала
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
тогда он должен работать
Я не могу настроить уровень ведения журнала журналов 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?
Вам нужно указать обработчики в файле ведения журнала
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
тогда он должен работать
Я попытался установить 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>
Похоже, что он еще не доступен под 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>
...
исчезновение журнала...
попробуйте
${build.testOutputDirectory}/logging.properties
Кроме того, я указываю этот материал в командной строке с помощью surfire-args.
<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine>
Я рассматривал эту точную проблему, но не хотел менять файл конфигурации проекта (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, описанной здесь отлично подходит для изоляции ошибок и ошибок.