无法识别log4j2配置文件

TIM*_*ngs 5 groovy logging log4j geb log4j2

我正在尝试在我的Geb框架中安装log4j2。对于我的一生,我不知道如何将它们结合在一起。我使用记录器“ Selenium”设置了log4j2.xml(不是log4j.xml)文件。在DefaultPage中,我尝试从配置文件中获取名称为Selenium的Logger LogManager.getLogger("Selenium")

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss,SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
      <Logger name="Selenium" level="TRACE">
          <AppenderRef ref="Console"/>
      </Logger>
    <Root level="TRACE">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

DefaultPage.groovy

class DefaultPage extends geb.Page {
    static content = {
        pageId(wait: true) { $("meta", name: "pageId").getAttribute("content") }
        pageHeading(wait: true) { $("meta", name: "heading").getAttribute("content") }
    }

    static final Logger logger = LogManager.getLogger("Selenium")

    /**
     * Uses jquery to create a mouseover on an element
     * @param element The jquery element created in the page object.
     */
    static def mouseOver(element) {
        logger.error("Hovering over ${element}")
        element.jquery.mouseover()
    }
}
Run Code Online (Sandbox Code Playgroud)

执行测试,并将输出写入STDERR,这是预期的,因为我有logger.error。但是,它不保留日期格式。另外,我还有其他类使用.info调用此记录器,而在STDOUT中则看不到这些类。当我调试记录器的级别是ERROR而不是TRACE时。

这是我的文件结构:

functional
|
 --src
   |
   |--test
      |
      |--groovy
      |     |
      |     |--com.x.functional
      |         |
      |         |--pages
      |              |
      |              |--DefaultPage.groovy
      |              |--Other classes that want to use log4j2.
      |
      |--resources
             |
             |--log4j2.xml
Run Code Online (Sandbox Code Playgroud)

谢谢。

编辑 将log4j更改为log4j2。正在添加配置状态= TRACE。修改后的日期格式(以毫秒为单位),以“,”代替“。”

Rem*_*pma 5

Log4J2 将查找log4j2.xml在类路径中命名的配置文件。如果它找不到这个文件,它会尝试一些替代方案(请参阅配置手册页),但log4j.xml默认情况下无法识别。(可以告诉 log4j2 将一些指定的文件作为配置:http ://logging.apache.org/log4j/2.x/faq.html#config_location )

如果未找到配置文件,则会安装默认配置,将 ERROR 和更高的事件记录到 StdErr。

我怀疑这就是正在发生的事情。解决此问题的最简单方法是重命名配置文件log4j2.xml并将其放在类路径中。然后,您可以通过指定<Configuration status="trace">在必要时进行进一步故障排除来启用 log4j2 内部日志记录。