【问题标题】:How to initialize log4j2 in Spring Java configuration based app during Unit Tests?如何在单元测试期间在基于 Spring Java 配置的应用程序中初始化 log4j2?
【发布时间】:2014-09-13 11:18:05
【问题描述】:

我正在使用 Spring Framework (4.1.0) 构建示例应用程序,我可以在其中使用单元测试。

我的测试类使用 @RunWith(SpringJUnit4ClassRunner.class) 注释记录 WARNS

log4j:WARN 找不到记录器的附加程序(org.springframework.test.context.junit4.SpringJUnit4ClassRunner)。

log4j:WARN 请正确初始化log4j系统。

在控制台中,因为我没有使用基于 log4j2 文件的配置。

我的测试类还使用@ContextConfiguration(classes = { AppConfig.class, ServletConfig.class }) 注释指向我尝试初始化log4j2 的上下文。

问题:在没有基于文件的配置的情况下,如何正确初始化 log4j2 以将其与 SpringJUnit4ClassRunner 一起使用?

欢迎使用其他基于 Java 的配置方法 :)

【问题讨论】:

  • 我在我的 test/resources 文件夹中放置了一个 log4j.xml 文件。
  • 据此记录,SpringJUnit4ClassRunner 与 log4j 无关。
  • @Hannes,如果我错了,请纠正我,但在 SpringJUnit4ClassRunner 的开头我们有 private static final org.apache.commons.logging.Log logger;,这意味着它与 log4j2 相关。
  • 这是commons-logging,会查找你使用的日志机制。因此,如果它找到一个 log4 库,它将使用它。如果没有找到,它将使用 sysout。
  • 你是对的,但问题仍然有效。

标签: java spring unit-testing log4j2


【解决方案1】:

您可以通过编程方式初始化 Log4j2。在 Log4j2 网站的 “以编程方式添加到当前配置”部分下有一个示例 here,显示了如何添加附加程序。

【讨论】:

    【解决方案2】:

    将以下文件内容作为log4j.xml 添加到您的类路径根目录:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> 
       <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
          <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
          </layout>
       </appender>
       <root>
          <level value="INFO"/>
          <appender-ref ref="consoleAppender"/>
       </root>
    </log4j:configuration>
    

    这应该配置 log4j。但是,请检查您的 lib 路径。任何地方都必须有一个 log4j jar。

    【讨论】:

      【解决方案3】:

      您的类路径中可能同时有 log4jlog4j2 jar。

      所以SpringJUnit4ClassRunner 正在尝试使用log4j 而不是log4j2。删除log4j jar 并改用log4j-1.2-api

      http://logging.apache.org/log4j/2.x/faq.html#which_jars

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-30
        • 1970-01-01
        相关资源
        最近更新 更多