找不到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台

新手上路,请多包涵
$ java -Dlog4j.configuration=file:///path/to/your/log4j2.xml -jar /path/to/your/jar_file.jar

写到控制台,你得到

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

但是,看起来配置文件已经找到并且无法解析:

     log4j:WARN Continuable parsing error 2 and column 31
    log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
    log4j:WARN Continuable parsing error 2 and column 31
    log4j:WARN Document is invalid: no grammar found.
    log4j:ERROR DOM element is - not a <log4j:configuration> element.
    log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

原文由 Jeff Maass 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

我处理这个问题已经有一段时间了。我已经按照这篇文章中的描述更改了所有内容,甚至认为发生了错误。在这种情况下,请确保在更改 .xml 或 .properties 文件中的设置时清理项目。在eclipse环境中。选择项目 -> 清理

原文由 Phate P 发布,翻译遵循 CC BY-SA 3.0 许可协议

问题1

 ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

解决方案 1

使用 log4j 版本 2 又名“log4j2”

 -Dlog4j.configuration=

应该读

-Dlog4j.configurationFile=

问题2

 log4j:WARN ....

方案二

在您的项目中,取消包含 log4j-1.2 jar,而是包含 log4j-1.2-api-2.1.jar。我不确定如何排除 log4j 1.2。我知道我的项目的哪些依赖项需要它。所以,通过一些阅读,我排除了一堆东西。

 <dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.8.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

我不确定是哪个排除项起作用了。另外,我包含了对桥接到 2.x 的 1.2 api 的依赖。

 <!--
    http://logging.apache.org/log4j/2.0/manual/migration.html
    http://logging.apache.org/log4j/2.0/maven-artifacts.html
    Log4j 1.x API Bridge
    If existing components use Log4j 1.x and you want to have this logging
    routed to Log4j 2, then remove any log4j 1.x dependencies and add the
    following.
-->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.2</version>
</dependency>

现在,仅发送到控制台的 1.2 日志实际上流向了我们的 2.x appender。

原文由 Jeff Maass 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题