为什么 spring 找不到 log4j appender

Why isn't spring finding log4j appender

在我的java主要方法中我有

    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 配置良好,问题出在使用 slf4j 的 spring。

我不相信 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?这种日志库版本的泥潭让人抓狂

如何消除这些警告?

提供 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>

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