28

我无法调整 java 日志的日志级别。我正在使用 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 对接的另一个痛苦?

4

4 回答 4

18

我尝试在 MAVEN_OPTS 环境变量中设置 java.util.logging.config.file,它不起作用,但最终通过将该系统属性放在 pom.xml 中(当然在 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>
于 2012-09-05T07:54:38.550 回答
10

您需要在日志文件中指定您的处理程序

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

那么它应该工作

于 2010-10-22T18:41:58.533 回答
3

尝试

${build.testOutputDirectory}/logging.properties

另外,我在命令行中使用 surfire-args 指定了这些东西。

<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine>
于 2011-07-27T17:40:36.463 回答
2

我正在查看这个确切的问题,但不希望每次我需要特定的测试日志记录时都更改项目配置(pom.xml)文件。

-D 属性适用于 Maven 命令行。

因此,您可以从命令行选择日志记录配置文件:

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

如果您使用通用级别分母,请.level=FINEST注意第 3 方日志记录也将出现在该级别。

要禁用或将 maven 或 3rd 方日志记录设置为特定级别,请在所选日志配置文件中为这些类使用显式日志级别选择。

我有很多来自 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 插件中的测试选择功能相结合非常适合隔离错误和错误。

于 2014-08-08T10:32:01.313 回答