利用log4j进行日志输出

来源:互联网 发布:protobuf 数组 编辑:程序博客网 时间:2024/05/22 17:25
log4j是目前最为流行的一种日志记录工具。使用它可以方便我们进行日志记录,有助于程序排错等。项目中用到了,在此稍作总结。

log4j 简介

主要分为3部分: 1,Logger:记录器,决定什么日志信息应该被输出、什么日志信息应该被忽略。负责供客户端代码调用,执行debug(Object msg)、 info(Object msg)、warn(Object msg)、error(Object msg)等方法。  2,Appender:存放器,指定日志信息应该输出到什么地方,可以是控制台、文件、网络设备。  3,Layout:布局格式,指定日志信息的输出格式。

log4j 5中信息级别

Debug     调试信息   级别最低Info      一般信息Warn      警告信息Error     错误信息Fatal     严重错误信息  级别最高,错误最严重的

## log4j 基本配置详解 ##

 以项目中的使用为例:
##此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名log4j.rootLogger=info,stdout,logfile##这里指stdout目标为控制台输出方式log4j.appender.stdout=org.apache.log4j.ConsoleAppender##控制台输出标准信息(System.err 错误信息)log4j.appender.stdout.Target=System.out##定义输出格式log4j.appender.stdout.layout=org.apache.log4j.PatternLayout##如果输出格式为PatternLayout时,必须指定具体的格式信息,每种参数代表不同的信息log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{HH:mm:ss SSS} - %m %l %n##输出的日志文件要根据最大限度来输出,达到最大限度时,会自动新建一个继续输出log4j.appender.logfile=org.apache.log4j.RollingFileAppender##默认的输出日志文件名为cclog.log,默认路径在程序根目录下log4j.appender.logfile.file=cclog.log##最大限度log4j.appender.logfile.MaxFileSize=2000KB##最多保存几个文件备份log4j.appender.logfile.MaxBackupIndex=20##这个指定输出格式log4j.appender.logfile.layout=org.apache.log4j.PatternLayout##指定输出格式中具体包含的信息log4j.appender.logfile.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m (%c{1}:%L) %n

自定义日志文件配置

我们发现,经过上面的配置,输出的日志,全部会存在一个日志文件中。也就是,你输出的日志是没有进行分类的。这样很容易造成一个麻烦,那就是当我们在程序报错时,输出一个日志时,还必须去挨着日志文件去查询,到底这个错误在日志中输出信息是什么?这样就会消耗大量的时间。于是,log4j提供了自定义的日志输出。可以将你的特殊需要单独输出到一个日志文件中去。这样查询就会简便多了!
log4j.logger.ws.HCM037=INFO,ws.HCM037log4j.appender.ws.HCM037=org.apache.log4j.RollingFileAppenderlog4j.appender.ws.HCM037.file=HCM037.loglog4j.appender.ws.HCM037.MaxFileSize=2000KBlog4j.appender.ws.HCM037.MaxBackupIndex=20log4j.appender.ws.HCM037.layout=org.apache.log4j.PatternLayoutlog4j.appender.ws.HCM037.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m (%c{1}:%L) %n

程序中代码:

/**首先在你要调用log输出日志的类中要进行声明log,这里和配置文件中的log4j.logger.ws.HCM037是对应的,这是log4j的层级关系实现的这里参数也可以指定某个类名等。*/private Logger log = Logger.getLogger("ws.HCM037");//然后进行调用就可以了try{    ....代码调用}catch(Exception e){    e.printStackTrace();    log.error("这里是错误信息"+e.getMessage,e);    //或者log.info("错误信息");}
这样达到的效果是什么样儿呢?看图:

这里写图片描述

小结

以上是项目中log4j的一些简单的应用。除此之外,我们还可以利用log4j来自定义日志输出的类,这时候需要重写AppenderSkeleton里面的方法。同时,还可以利用配置文件进行参数传递等操作。功能很是强大的。具体请参考:

自定义log类
输出格式参数定义参考

1 0
原创粉丝点击