java - Log4J 仍在与 Log4j2 一起运行

标签 java spring-boot log4j log4j2

我有一个 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/

相关文章:

java - 为什么 ConsoleAppender 抛出 "no output stream or file set for the appender named [null]"?

java - 更改溢出菜单的颜色

当客户端将对象发送到服务器时,Java 抛出错误,IDE 中没有错误/警告

java - 使用 hibernate 示例时没有插入行

java - Spring Boot 配置和使用两个数据源

java - 如何在 Spring Boot 中的所有测试用例之前仅设置一次独立 Controller ?

java - Java 中的 Bluray Burner - 从哪里开始?

json - Spring Boot Rest - OffsetDateTime 以浮点形式返回

java - 使用 log4j 将 spring 消息从 sysout 获取到文件

java - log4j,想在控制台中只显示调试(不是信息)并在应用程序启动时清除日志文件