类型不匹配:无法从 org.slf4j.Logger 转换为 org.apache.log4j.Logger

Type mismatch: cannot convert from org.slf4j.Logger to org.apache.log4j.Logger

我在 eclipse Mars 中配置了我的环境,但我遇到了 log4j 错误。我使用 spring 4 和 maven 作为依赖管理器。部分代码:

Eclipse 在这一行显示错误,等号之后的第二部分:

private static final Logger LOGGER = LoggerFactory.getLogger(PropertyConfiguration.class);

错误:

Type mismatch: cannot convert from org.slf4j.Logger to org.apache.log4j.Logger

我的属性配置在 com.myapp.bootstrap 中,xml 文件在 src/main/resources 中。

我的log4j.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="defaultAppender" class="org.apache.log4j.ConsoleAppender">
        <param name="encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c{2}: %m%n" />
        </layout>
    </appender>

    <logger name="com.myapp" additivity="false">
        <level value="DEBUG" />
        <appender-ref ref="defaultAppender" />
    </logger>

    <root>
        <priority value="INFO" />
        <appender-ref ref="defaultAppender" />
    </root>

</log4j:configuration>

有人有什么想法吗?

感谢

检查您的导入。有时 Eclipse 选择导入 org.slf4j.Logger 而不是 org.apache.log4j.Logger.

使用两者的组合

import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.log4j.Logger;
import org.apache.log4j.Priority;

Slf4j 根据你的库

对我来说,我的一个 spring 项目 intellij 是罪魁祸首,它实际上是自动导入

import java.util.logging.Logger;

我必须使用以下内容手动更新导入

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

我正在 Spring 启动 IntelliJ,这修复了错误

import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.*;