log4j从无到有构造全过程

1、将log4j的2个jar包拷贝进eclipse的项目中,将添加进build path中。

jar包分别如下:commons-logging、log4j-1.2.8.jar。

 

2、将log4j.xml文件或者log4j.properties文件添加进项目中,一般是新建一个文件夹conf,然后将log4j.xml文件添加进来。我用eclipse swing做时并未导入log4j.dtd文件。并未出现不正常的情况。

 

3、下面要对引进的Log4j.xml进行配置。具体参见:

http://wandejun1012.iteye.com/admin/blogs/1402259

 

4、特别注意的是,要在程序中对xml文件的引入,否则会出现如下错误:

 

log4j:WARN Please initialize the log4j system properly.

 解决办法是:1)、对于log4j.properties文件,用PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加载.properties文件

2)、对于log4j.xml文件:

DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加载.xml文件

具体参见如下例子:

 

package test;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class TestLog4j {

	private Logger logger;
	public TestLog4j(){
		DOMConfigurator.configure("conf/log4j.xml");//加载.xml文件
		
		logger=Logger.getLogger(TestLog4j.class.getName());
		logger.info("gogogo");
		logger.debug("hi");
		System.out.println("I just print");
	}
	public static void main(String[] args) {
		new TestLog4j();
	}

}

 

 

ps:如果是放在src的根目录下,则不需要此初始化log4j的过程。

 

5、级别分为ALL < DEBUG < INFO < WARN <error,如果设置级别为INFO,则优先级大于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如:DEBUG将不会被输出。

  level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。

 

 

6、在程序里面调用Logger类即可。详情见如下:

 

private Logger logger=Logger.getLogger(TestLog4j.class.getName());

 

TestLog4j.class.getName()这个即是“类名”,可以用任何一个动态的类名,或者用Log4j.xml里面设置的类名,如下面所示的result :

 

  <logger name="result" additivity="false"> 
    <level value ="info"/>
    <appender-ref ref="InfoAppender"/>
  </logger> 

 

 

7、log4j官方文档:http://logging.apache.org/log4j/1.2/manual.html

 

 

 ----------------------------------------------------------------------------------------------

注意到:在web工程中,只需要引入log4j1.x.jar, 以及common-logging.jar就可以了,另外log4j.properties放在src里面就行了,不需要在web.xml中引入log4j的位置。

你可能感兴趣的:(log4j)