当我运行以下简单的log4J示例时,出现错误:
import org.apache.logging.log4j.core.*;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class log4jExample{
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(
log4jExample.class.getName());
public static void main(String[] args)
throws IOException,SQLException{
log.debug("Hello this is an debug message");
log.info("Hello this is an info message");
}
}
,错误如下:
Error: package org.apache.logging.log4j.core does not exist
Error: cannot find symbol
symbol: class Logger
location: class log4jExample
File: C:\Users\adel\Desktop\various_topics\JavaProjects\log4jExample.java [line: 10]
Error: cannot find symbol
symbol: variable Logger
location: class log4jExample
所以我相信我正确地将log4J添加到类路径中,如下所示:
我从apache目录中提取jar
文件log4j-core-2.0-beta4.jar
,如下所示:
我不确定发生了什么 - import语句如何工作?即在线示例告诉我说:
import org.apache.log4j.Logger;
但如果我的目录结构如下:
\ Apache的log4j的-2.0-BETA4槽\组织\阿帕奇\记录\ log4j的\芯\ Logger.java
我是否必须说:
import org.apache.logging.log4j.core.Logger;
代替?
答案 0 :(得分:11)
我认为您需要在类路径中同时使用 API 和 Core jar。按照these说明进行构建和安装,并these进行配置。在配置页面上,您询问的导入行是import org.apache.logging.log4j.Logger;
,因此将从API jar中提取Logger
类。
Log4j 2 需要两个罐子(而不是 Log4j 1.x 需要一个)因为:
API分离
Log4j的API与实现分开,使应用程序开发人员可以清楚地了解可以使用哪些类和方法,同时确保向前兼容性。这使Log4j团队能够以兼容的方式安全地改进实施。
答案 1 :(得分:0)
顺便说一句,log4j 2.0 beta5有一些你可能感兴趣的新功能,比如异步记录器,JSP标记库和JMX支持。