当前位置: 首页 > 知识库问答 >
问题:

无法识别log4j2配置文件

穆展鹏
2023-03-14

我正在尝试在我的Geb框架中设置log4j2。就我的一生而言,我不知道如何把这些结合起来。我有一个log4j2。使用记录器“Selenium”设置xml(不是log4j.xml)文件。在DefaultPage中,我尝试从配置文件LogManager中获取名为Selenium的记录器。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>

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()
    }
}

测试执行并将输出写入STDERR,这是预期的,因为我有记录器。错误但是,它不支持日期的格式。此外,我还使用其他类调用此记录器。信息和那些在标准输出中看不到。调试时,记录器的级别是错误,而不是跟踪。

以下是我的文件结构:

functional
|
 --src
   |
   |--test
      |
      |--groovy
      |     |
      |     |--com.x.functional
      |         |
      |         |--pages
      |              |
      |              |--DefaultPage.groovy
      |              |--Other classes that want to use log4j2.
      |
      |--resources
             |
             |--log4j2.xml

非常感谢。

编辑将log4j更改为log4j2。添加配置状态=TRACE。修改了毫秒的日期格式,用','代替'.'

共有2个答案

巫马浩言
2023-03-14

老问题,但我会回答的情况下,有人一直在寻找如何解决这个问题。

正如TIMBERings所说,建议将文件放在Resources文件夹中。如果使用eclipse,则需要将Resources文件夹添加到Java构建路径处的源。

无需指定

您可以将"."或","放在ss和SSS%d{HH: mm: ss之间。SSS}(只是格式化)。

当做

东门奕
2023-03-14

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

如果没有找到配置文件,则会安装一个默认配置,将ERROR和更高级别的事件记录到StdErr。

我怀疑这就是正在发生的事情。最简单的补救方法是重命名配置文件log4j2.xml并将其放在类路径中。然后,您可以通过指定启用log4j2内部日志记录

 类似资料:
  • 我正在尝试使用log4j2记录器登录我的aws lambda函数,但不幸的是找不到log4j2.xml,我只是在CloudTrail日志中看到标准错误消息 “错误状态记录器未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。” 如果我在本地运行应用程序(在main方法中调用对象方法)一切正常)。我遵循官方的AWS留档,但没有帮助。 可以部署的虚拟项目如下:https://github.

  • 问题内容: 似乎log4j试图通过XML解析器解析.json配置文件,但是为什么呢? 我通过命令行参数设置log4j配置文件: 文件内容: 我得到的是: 我的lib文件夹中的Jar: hamcrest-junit-2.0.0.0.jar jackson-annotations-2.6.1.jar Jackson core-2.6.1.jar jackson-databind-2.6.1.jar j

  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。

  • 突然之间,网络Storm对我来说不认识Javascript了。 如果我添加这样的文件: 之后我在IDE中看到的是: 如果我刷新,重新启动Webstorm,它仍然无法识别文件!网络Storm已无法使用!

  • 问题内容: 我想把它放在我的pom.xml- 但收到此错误- 我的pom.xml- 问题答案: 您发布的摘录属于标记内。具体来说,它属于Apache Maven Jar插件内部。请参阅下面的示例,以了解您在做什么错。 请参阅此处的Apache Maven Jar插件文档:https : //maven.apache.org/plugins/maven-jar- plugin/index.html

  • Webstorm 无法将我的一个.js文件识别为 JavaScript 文件,因此我丢失了语法突出显示并能够添加断点。我查看了文件,有问题的文件似乎与其他正常工作的.js文件具有相似的设置。 如果我更改文件名,它可以正常工作。因此,不知何故,Webstorm 陷入了误解具有此名称的文件类型的困境。我还可以在哪里编辑项目?