【问题标题】:Maven - ERROR StatusLogger No log4j2 configuration file foundMaven - 错误 StatusLogger 找不到 log4j2 配置文件
【发布时间】:2018-08-27 03:02:07
【问题描述】:

运行 mvn verify 时,我收到以下消息:

我已经按照here 的建议将log4j2.xml 放在src/test/resources 下(但不在src/main/resources 中,因为我不希望它与实际应用程序一起提供)无济于事。

生成 HTML 报告,写入日志文件,构建成功,如上所示。我不确定错误来自哪里。

【问题讨论】:

  • 如果在pom中添加以下依赖是不是同样的消息-> org.apache.logging.log4jlog4j-api2.10.0
  • @MrCas 添加log4j-api 后仍然出现相同的错误消息。毕竟,它是log4j-core 的瞬态依赖,所以它是否在 pom.xml 中指定无关紧要。
  • 你试过-Dlog4j.configurationFile=file:///path/to/your/log4j2.xml吗?

标签: java maven cucumber


【解决方案1】:

根据http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfigurationlog4j2.xml 添加到类路径应该会有所帮助。

如果找不到 JSON 文件,XML ConfigurationFactory 将尝试 在类路径中找到 log4j2.xml。

因此,如果您仍然收到与您的来源无关的错误消息问题。 maven-cucumber-reporting 插件中的问题。如此处所述http://maven.apache.org/guides/mini/guide-maven-classloading.html

请注意,插件类加载器既不包含当前项目的依赖项,也不包含其构建输出。

如果 maven 插件在其自己的类路径(不包括您的源/资源)中找不到任何 log4j 配置,您将看到错误消息。所以是的,唯一的解决方案等待发布修复https://github.com/damianszczepanik/cucumber-reporting/issues/675

【讨论】:

  • 对不起,我忘记了这个赏金,但这是令人印象深刻的侦探工作。可接受的解释并标记为答案。
【解决方案2】:

您使用的是最新的 Cucumber 版本 3.15.0(在撰写本文时)。您的问题已解决为issue #675。来自pull requestcommit 旨在解决此问题,但可能您必须等到下一个版本发布才能从中获利 - 或者在本地构建快照版本,看看它是否也解决了问题给你。

【讨论】:

  • 好吧,你可以不接受另一个并接受我的。我的答案是在接受的前 4 天写的,并且是正确的。另一个答案没有增加价值,甚至指向之前指出的同一张票。先到先得。
【解决方案3】:

运行 -> 运行配置 -> 类路径 -> 用户条目 -> 高级选项 -> 添加文件夹 -> 然后添加您的文件夹,在您的情况下为 src/test/resources -> 应用

它现在必须工作:D

【讨论】:

  • 谢谢,但 src/test/resources 已被标记为源文件夹。其中的所有内容都已进入目标类路径。
【解决方案4】:

您收到此错误是因为cucumber 或其依赖项正在使用log4j 进行日志记录,并且由于没有log4j 配置文件,因此log4j 正在打印此类消息。

如果没有log4j配置文件,log4j使用类似下面的配置-

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configuration>

<Configuration status="warn" name="xml_configuration">

    <Appenders>
        <Console name="consoleLogger" target="SYSTEM_OUT">
            <PatternLayout
                pattern="[%level] %m%n" />
        </Console>
    </Appenders>

    <Loggers>
        <Root level="error" additivity="false">
            <appender-ref ref="consoleLogger" />
        </Root>
    </Loggers>
</Configuration>

/src/main/resources/log4j2.xml 中添加上述配置将与没有log4j2.xml 文件的结果相同。

另一种尝试的方法是将log4j2.xml文件直接传递给maven,而不将其放入项目类路径中。像下面这样 -

set MAVEN_OPTS="-Dlog4j.configurationFile=file:///path/to/log4j2.xml"
mvn verify

【讨论】:

  • 嗨,我在类路径中有配置文件。事实证明,这是 maven-cucumber-reporting 插件本身的一个已知缺陷,直到最近才修复。
【解决方案5】:

根据他们的文档,您可以使用 'joranConfigurator' 并从指定文件加载配置

documentation link

【讨论】:

  • 谢谢,但这是一个不同的日志框架。
猜你喜欢
  • 2018-01-02
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2014-10-18
  • 2018-06-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多