java - Log4j2 在测试前以 TRACE 级别记录日志,包括解析 xml 配置。如何在开始记录之前更改级别?

标签 java log4j2 junit5

我刚刚设置了一个项目来使用 junit jupiter (junit 5) 进行测试,并且无论我在 xml 配置中设置的级别如何,我都在 TRACE 级别获得了一堆 log4j2 输出。示例输出如下。如何在解析 xml 之前更改 log4j2 记录的级别?

这是我的 xml 配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE" packages="com.travisfw">
  <Appenders>
    <Console name="console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
  </Appenders>
  <Loggers>
    <Root level="WARN">
      <AppenderRef ref="console" />
    </Root>
    <Logger level="WARN" name="com.travisfw" additivity="false">
      <AppenderRef ref="console" />
    </Logger>
  </Loggers>
</Configuration>

然后,尽管 WARN 是我设置的唯一级别,但我在 junit 报告中得到 DEBUG 和 TRACE 输出,从它找到我的 xml 配置的位置开始:

2018-10-04 16:04:48,532 Test worker DEBUG Apache Log4j Core 2.11.1 initializing configuration XmlConfiguration[location=/home/.../build/resources/main/log4j2.xml]
2018-10-04 16:04:48,539 Test worker DEBUG Installed 1 script engine
2018-10-04 16:04:48,920 Test worker DEBUG Oracle Nashorn version: 1.8.0_181, language: ECMAScript, threading: Not Thread Safe, compile: true, names: [nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript], factory class: jdk.nashorn.api.scripting.NashornScriptEngineFactory
2018-10-04 16:04:48,924 Test worker DEBUG Took 0.004073 seconds to load 0 plugins from package com.travisfw
2018-10-04 16:04:48,925 Test worker DEBUG PluginManager 'Core' found 117 plugins
2018-10-04 16:04:48,925 Test worker DEBUG PluginManager 'Level' found 0 plugins
2018-10-04 16:04:48,928 Test worker DEBUG PluginManager 'Lookup' found 13 plugins
2018-10-04 16:04:48,930 Test worker DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
2018-10-04 16:04:48,936 Test worker TRACE TypeConverterRegistry initializing.
2018-10-04 16:04:48,937 Test worker DEBUG PluginManager 'TypeConverter' found 26 plugins
2018-10-04 16:04:48,944 Test worker DEBUG PatternLayout$Builder(pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n", PatternSelector=null, Configuration(/home/.../build/resources/main/log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="null", noConsoleNoAnsi="null", header="null", footer="null")
2018-10-04 16:04:48,945 Test worker DEBUG PluginManager 'Converter' found 44 plugins
2018-10-04 16:04:48,946 Test worker DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender].
2018-10-04 16:04:48,954 Test worker DEBUG ConsoleAppender$Builder(target="SYSTEM_OUT", follow="null", direct="null", bufferedIo="null", bufferSize="null", immediateFlush="null", ignoreExceptions="null", PatternLayout(%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n), name="console", Configuration(/home/.../build/resources/main/log4j2.xml), Filter=null)
2018-10-04 16:04:48,958 Test worker DEBUG Starting OutputStreamManager SYSTEM_OUT.false.false
2018-10-04 16:04:48,959 Test worker DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin].
2018-10-04 16:04:48,964 Test worker DEBUG createAppenders(={console})
2018-10-04 16:04:48,965 Test worker DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
2018-10-04 16:04:48,970 Test worker DEBUG createAppenderRef(ref="console", level="null", Filter=null)
2018-10-04 16:04:48,970 Test worker DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger].

我会把完整的日志留给你,但它会持续一小会儿。

最佳答案

我认为您的问题是您设置了 status logger 的级别跟踪:status="TRACE"。尝试将其更改为不同的级别 - 也许是 WARN。

关于java - Log4j2 在测试前以 TRACE 级别记录日志,包括解析 xml 配置。如何在开始记录之前更改级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52656475/

相关文章:

java - Java 中可以进行代码注入(inject)吗?

java - 第二个模块中的 Web 服务处理程序阻止 log4j2 配置

log4j2 附加程序与 sql server 数据库对话

java - 使用mockito在TestFx中模拟FileChooser

java - 我显然对 boolean 值有疑问,基于文本的游戏

java - 如何对多个索引之间的 lucene 搜索结果进行排序?

java - log4j2 外部库日志记录到单独的文件中

mockito - Junit 5 Assertions.assertThrows 中预期有自定义异常,但没有抛出任何异常

java - 当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?

java - 当屏幕方向改变时android线程崩溃