Log4j初体验

一句话概括处理过程

       首先日志消息被创建,然后传递给能够处理日志消息的日志对象,再通过设定日志的输出方式和输出格式后,最终日志信息得到处理。

优先级   

   从上面的图可以看到,消息传来时,首先会经过一个优先级判定。Log4j为日志信息定义了7种不同的优先级,定义这几个优先级的依据是产生日志信息的源。有时你需要在debug的时候输出,就像system.out.println();有时你在处理同时1000条数据时,你想看看当前处理的进度,可以通过日志信息输出。为了区别对待这些不同的日志信息,就定义了不同的优先级。

Logger log=Logger.getLogger(Test.class);
//output different log-message 
log.debug("This is Debug message");
log.info("This is Info message");
log.warn("This is Warn message");
log.error("This is Error message");
log.fatal("This is fatal message");

log4j的优先级列表如下:

优先级别 代表的意义
ALL 所有信息都输出
DEBUG 程序调试的消息输出
INFO  程序运行时粗过程的消息
WARN 程序可能出现问题的警告消息
ERROR 程序出现严重的问题的错误消息
FATAL 程序出现致命的错误,应立即停止
OFF 关闭日志处理,不输出

 

 

 

 

 

 

 

一般在程序中经常使用的DEBUG、INFO、WARN和ERROR这四个级别。

Appender

   创建完对应级别的logger之后,就是要定义输出处理了,也就是上图中的Output Handler。方法是实现接口Appender,这个接口定义日志信息要输出到什么地方去。常用的Appender实现类如下:

Appender实现类 详细信息
ConsoleAppender 把日志信息通过system.out输出到控制台窗口。
FileAppender 把日志信息输出到指定的文本中。
DailRollingFileAppender 继承FileAppender,只不过会根据设定天数产生。
RollingFileAppender 继承FileAppender,当日志文件大于摸个设定值时产生新的日志。
WriterAppender 把日志信息以流的格式发送到指定的地方。
SMTPAppender 把日志信息屹email进行发送。
SocketAppender 把日志信息通过Socket的方式发送给远程日志服务器。
JDBCAppender 把日志信息存入数据库。
SocketHubAppender  把日志信息以Socket的方式发给若干个远程日志服务器。

 

 

 

 

 

 

 

 

 

 

 

 

Layout

   还是上图,设定好了将日志信息输出至什么地方之后,就要设置输出的样式。方法是实现Layout接口,对日志信息按照指定的格式输出。

Layout实现类 详细信息
HTMLLayout 把日志信息格式化成HTML的表格形式输出。
SimpleLayout 简单形式输出,是输出优先级和内容。
XMLLayout  把日志信息以XML格式进行输出。
TTCCLayout 输出时间、线程、类别等信息。
PatternLayout 按照指定符号格式输出日志信息。

 

 

 

 

 

 

 

实例代码如下:

Logger log=Logger.getLogger(Test.class);
HTMLLayout layout=new HTMLLayout();
FileAppender appender=null;
try{
    appender=new FileAppender(layout,"logfile.htm",true);  
}catch(IOException){
     e.printStackTrace();
}
//set appender
log.addAppender(appender);
//set level
log.setLevel(Level.DEBUG);
log.debug("This is debug message");

 运行Test类后,在项目的根目录下产生logfile.htm文件,打开之后,你可以看到日志信息以表格的形式展现。

但是,,,,通过这种代码方式对log4j设定太不给力,真正常用的是通过配置文件来设置。So, to be continued.....

 

 

posted @ 2012-11-16 15:14  阿凡迪  阅读(685)  评论(1编辑  收藏  举报