在我的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.xml
或spring_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?这个日志库版本的泥潭令人抓狂。
如何安抚这些警告?
答案 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配置出现在控制台中。