我无法调整java logging的日志记录级别。我正在使用maven surefire(mvn test),并试图从默认的INFO调整到例如FINEST。
我在 src / test / resources / logging.properties
下有logging.properties文件编译之后,我在target / test-classes下看到,我看到一个带有预期配置的logging.properties文件:
java.util.logging.ConsoleHandler.level = FINEST
javax.enterprise.system.container.ejb.level = FINE
...
但是来自glassfish的控制台输出只有INFO / SEVERE级别的消息。
我哪里出错了?或者这是maven屁股上的另一种痛苦?
答案 0 :(得分:16)
我尝试在MAVEN_OPTS环境变量中设置java.util.logging.config.file,这不起作用,但最终通过将该系统属性放在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>
答案 1 :(得分:8)
您需要在日志记录文件中指定处理程序
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
然后它应该工作
答案 2 :(得分:3)
尝试
${build.testOutputDirectory}/logging.properties
另外,我在命令行中使用surfire-args指定了这些内容。
<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine>
答案 3 :(得分: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
域中所有记录器的所有日志记录。
将此与here所述的surefire插件中的测试选择功能-Dtest=...
相结合,非常适合隔离错误和错误。