我有一个 spring-boot 项目,正在从 Log4j 过渡到 Log4j2。我已按照文档 here 中的步骤操作。具体来说,我修改了 log4j.xml 以符合 log4j2 标准并将其重命名为 log4j2.xml 我已使用 <Configuration status="debug">
在 log4j2 上启用了调试在我的 log4j2.xml 中进行设置,以便我可以看到 log4j2 启动。在启动我的 Spring Boot 应用程序时,我使用以下系统设置:
-Dlog4j.configurationFile=log4j2.xml -Dorg.jboss.logging.provider=log4j2
我可以在调试输出中看到我的 log4j2.xml 启动附加程序等,然后最终 log4j2 消息指出:
Logging provider: org.jboss.loggin.Log4j2LoggerProvider found via system property
我正在使用以下 jar :
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.12'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.4.1'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version: '1.4.0.RELEASE'
但是,我仍然收到来自 Log4j 的消息:
log4j:WARN No appenders could be found for logger 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 并仅使用 log4j2?我是否会从 log4j2 收到一条消息,该消息会明确告诉我何时正确配置了它?使用 Log4j2 时是否缺少任何特殊配置?
最佳答案
您必须仅对 log4j2 使用这些依赖项。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.slf4j.impl.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j2.version}</version>
<scope>runtime</scope>
</dependency>
您还需要从 spring-boot 中排除 spring-boot-starter-logging。像这样
关于java - Log4J 仍在与 Log4j2 一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859211/