java - 为什么 Log4J 环境变量需要核心 JAR 和 api JAR?

标签 java import log4j2

安装Log4J时,我们需要在系统类路径中有两个变量:

log4j-api
log4j-core

log4j-api 变量如下所示:

log4j-api : C:\apache_log4j_beta5\apache-log4j-2.0-beta5-bin\log4j-api-2.0-beta5.jar

log4j-core 变量如下所示:

log4j-核心:C:\apache_log4j_beta5\apache-log4j-2.0-beta5-bin\log4j-core-2.0-beta5.jar

这两个环境。变量进入重叠的 LOG4J_HOME 变量:

LOG4J_HOME - %log4j-api%;%log4j-core%

为什么它同时需要 api 和核心库(JAR 文件)?当我导入一个类时,我说:

import org.apache.logging.log4j.Logger;

那么上面的哪些 JAR 在这里被搜索了?是核心还是api?任何提示表示赞赏,谢谢

最佳答案

log4j-api,顾名思义,它是一个 API。所以基本上它只包含可用于将代码与 log4j 框架连接的接口(interface)。 log4j-core 是这个接口(interface)的实现,所以它包含了实际的代码。它实现了 API 中的每个接口(interface)。

所以基本上当您导入 Logger 类时,您是从 API 库中导入它。当您调用 LogManager.getLogger() 时,它首先在一个静态 block 中初始化自己,然后它会尝试搜索有效的实现。这就是您也需要核心库的原因。

关于java - 为什么 Log4J 环境变量需要核心 JAR 和 api JAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235195/

相关文章:

java - 覆盖具有泛型错误的方法

java - 在SWT环境中如何知道一个线程是否完成了它的任务?

mysql 如何在sql运行期间设置列默认值

java - 限制 log4j2 中汇总日志文件的最大数量

java - 有没有办法使用Log4j2中的RoutingAppender基于Marker路由日志

java - 如何检查 Java 类是否是当前堆栈跟踪的一部分?

java多线程cpu利用率

java - 如何读取 <default.package> 中文本文件的内容 [Java]

node.js - Neutrinojs/vue 项目 : Importing vue files/templates from root folder

java - 如何禁用 Spring 记录器?