为什么Log4J环境变量需要core和api JAR?

时间:2015-07-05 21:31:41

标签: 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-core: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?感谢任何提示,谢谢

1 个答案:

答案 0 :(得分:4)

log4j-api,因为它的名称是API。所以基本上它只包含可用于将代码与log4j框架连接的接口。 log4j-core是此接口的实现,因此它包含实际代码。它实现了API中的每个接口。

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