为什么春天找不到log4j appender

时间:2017-08-02 12:05:25

标签: java spring log4j slf4j log4j2

在我的java main方法中我有

    LogManager.getLogger().error("Log message");
    new ClassPathXmlApplicationContext("spring_config.xml");

哪个产生

Log message
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这表明log4j配置正常,问题在于spring,它使用了slf4j。

我不相信log4j2.xmlspring_config.xml提供任何相关信息。如果你想看到,请在评论中询问。

我怀疑问题出在库版本上,可能是某种冲突,所以你得到了我的maven pom.xml,以及依赖关系。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.16</version>
    </dependency>

我想知道slfj4-log4j12,但我没有看到更好的东西。 slf4j是否尝试连接到log4j v1?这个日志库版本的泥潭令人抓狂。

如何安抚这些警告?

1 个答案:

答案 0 :(得分:0)

提供log4j.xml配置会停止警告并启用spring日志记录,因此问题在于slf4j实现slf4j-log4j12需要log4j版本1配置文件。

替换slf4j实现依赖项
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.6.2</version>
    </dependency>

导致Spring输出仅使用log4j2.xml配置出现在控制台中。