新建java项目,引入log4j-1.2.16.jar;
在src下创建配置文件log4j.properties,写入如下内容
编写java代码如下:
运行HelloWorldLog4j控制台将打印
[b][main] DEBUG HelloWorldLog4j - hello, log4j[/b]
配置文件解析过程如下:
Logger.getLogger方法内调用LogManager.getLogger(clazz.getName())方法,要想调用LogManager.getLogger必须初始化类LogManager,初始化会执行LogManager类的静态语句块,就是在此静态语句块内完成的配置文件加载操。在静态语句块内使用当前类加载器的getResource方法获得URL对象,先默认搜索log4j.xml,如果不存在,再搜索log4j.properties,得到log4j.properties的绝对路径,如果得到的xml文件则使用OptionConverter类的instantiateByClassName静态方法解析配置文件,否则使用PropertyConfigurator类的doConfigure解析配置文件,然后根据解析的配置文件得到LoggerRepository,就可以根据HelloWorldLog4j的类名获得一个日志对象。
在src下创建配置文件log4j.properties,写入如下内容
log4j.rootLogger=debug,appender1
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
编写java代码如下:
import org.apache.log4j.Logger;
public class HelloWorldLog4j {
/**
* @param args
*/
private static Logger logger = Logger.getLogger(HelloWorldLog4j.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
logger.debug("hello, log4j");
}
}
运行HelloWorldLog4j控制台将打印
[b][main] DEBUG HelloWorldLog4j - hello, log4j[/b]
配置文件解析过程如下:
Logger.getLogger方法内调用LogManager.getLogger(clazz.getName())方法,要想调用LogManager.getLogger必须初始化类LogManager,初始化会执行LogManager类的静态语句块,就是在此静态语句块内完成的配置文件加载操。在静态语句块内使用当前类加载器的getResource方法获得URL对象,先默认搜索log4j.xml,如果不存在,再搜索log4j.properties,得到log4j.properties的绝对路径,如果得到的xml文件则使用OptionConverter类的instantiateByClassName静态方法解析配置文件,否则使用PropertyConfigurator类的doConfigure解析配置文件,然后根据解析的配置文件得到LoggerRepository,就可以根据HelloWorldLog4j的类名获得一个日志对象。