junit Maven surefire下的日志记录级别

ovfsdjhp  于 2022-11-11  发布在  Maven
关注(0)|答案(4)|浏览(188)

我无法调整java日志的日志级别。我正在使用maven surefire(mvn测试),并尝试从默认INFO调整为FINEST。
我在 logging.properties源代码/测试/资源/日志记录.属性下有www.example.com文件
编译后,我在target/test-classes下看到一logging.properties包含预期配置的www.example.com文件:

java.实用程序.日志记录.控制台处理程序.级别=最新
javax.企业.系统.容器.ejb.级别=精细

...
但是,glassfish的控制台输出只有INFO / SEVERE级别的消息。
我哪里做错了?还是这是maven的另一件麻烦事?

z2acfund

z2acfund1#

我试着在MAVEN_OPTS环境变量中设置java.util.logging.config.file,但没有成功,最后通过将该系统属性放入pom.xml中(当然,还在src/test/resources中创建了一个适当的logging.properties),使其成功:

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

cngwdvgl2#

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

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

那就应该可以了

5f0d552i

5f0d552i3#

尝试

${build.testOutputDirectory}/logging.properties

此外,我在命令行中使用surfire-args指定这些内容。

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

jtjikinw4#

我正在研究这个确切的问题,但是不希望每次我需要在测试中进行特定的日志记录时都更改项目配置(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域的所有记录程序的所有日志记录。
将其与surefire插件中的测试选择特性-Dtest=...结合起来,可以很好地隔离bug和错误。

相关问题