java - 导入org.apache.log4j无法解析

标签 java apache logging log4j log4j2

Eclipse、Selenium、Windows

无法解析导入org.apache.log4j

我已遵循我能找到的所有记录步骤,即:

1) 以下两个 jar 文件位于项目构建路径中: log4j-core-2.6.2.jar 和 log4j-api-2.6.2.jar

2) 上述两个jar文件位于以下文件夹中: C:\eclipse\apache-log4j-2.6.2-bin

3)上述文件夹在我的系统CLASSPATH环境变量C:\eclipse\apache-log4j-2.6.2-bin中

4) 该项目在项目根目录中包含以下 log4j.properties 文件

    # This sets the global logging level and specifies the appenders
log4j.rootLogger=INFO, theConsoleAppender
    # settings for the console appender
    log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
    log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.theConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

5)我已经清理了项目

6) 失败的导入是: import org.apache.log4j.Logger;

<小时/>

我也间歇性地收到此错误消息

第一行“org.apache.log4j.Logger 类型无法解析。它是从所需的 .class 文件间接引用的”:

包com.example;

当我执行项目 -> Clean 时,此错误消失

但是导入 log4j 时的错误仍然存​​在。

<小时/>

如有任何想法,我们将不胜感激。

最佳答案

如果您收到此错误,则意味着您的应用程序或其依赖项之一使用 Log4j 1.2 API。

org.apache.log4j 包是 Log4j 1.2 命名空间。 Log4j 2 使用 org.apache.logging.log4j 命名空间。 Log4j 1.2 became End of Life 2015年,建议用户升级到Log4j 2。

您的类路径中已经有了正确的 log4j-api-2.x.jar 和 log4j-core-2.x.jar,唯一缺少的是 log4j-1.2-api-2.x.jar。 log4j-1.2-api 是一个适配器模块,可确保应用程序对 Log4j 1.2 API 的调用委托(delegate)给 Log4j 2 实现。

请确保旧的 log4j-1.2.x.jar 已从类路径中删除。

最后,您显示的配置似乎适用于 Log4j 1.2,不适用于 Log4j 2。Log4j 2 手册有许多示例配置。 (仅文档就是升级的理由,Log4j 2 中的它要好得多。)例如,请参阅 Console appender 上的部分。或File appender

Log4j 2 还支持 properties configuration format (但语法与 log4j 1.2 属性格式不同)。

关于java - 导入org.apache.log4j无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38360874/

相关文章:

apache - ProxyPassReverse 删除 HTTPS

java - 带有 MemoryMappedFile 和中断文件的 Log4j2

.net - 通用ILogger,或者通过Serilog,添加logging属性

linux - 如何在 shell 脚本中管理日志的详细程度?

java - jdbc executeUpdate 在自动提交模式下失败

java - 使用 OS Sierra 在 R(3.4.1) 中加载 rJava

c# - 为什么对流的 "Close"调用在 C# 和 Java 中的行为不同?

java - 无限循环...?

php - MySQL 不能与 php 一起工作;并在启用时使 apache 崩溃

启用apache响应时间日志指令的性能影响