适用的Log4j的使用


placeholder image
admin 发布于:2012-01-05 20:50:00
阅读:loading

标题的意思是说:从很强大的东西中找到适合我们适用的部分。据说dom4j比jdk中自带的logging要更好,只不过dom4j的某个版本在完成的适合,jdk1.5的正式版已经封板了,不想再动了,因此dom4j便没有内置于jdk中。

dom4j的配置文件有xml文件和properties文件两种,基于properties文件的配置我觉得简单点,直接键值对的形式便可。

     从一个dom4j.properites文件的配置,根据配置的内容来分析这个日志的实现,详细如下:

  1. #appenderType日志输出类型   

  2. log4j.rootLogger = debug,appenderType,appenderLocation   

  3. log4j.appender.appenderType = org.apache.log4j.ConsoleAppender   

  4. log4j.appender.appenderType.layout = org.apache.log4j.PatternLayout   

  5. log4j.appender.appenderType.layout.ConversionPattern = [%d{yy-MM-dd HH:mm:ss:SSS}][%C-%M] %m%n   

  6. #appenderLocation日志输出位置   

  7. log4j.appender.appenderLocation = org.apache.log4j.RollingFileAppender   

  8. log4j.appender.appenderLocation.layout = org.apache.log4j.PatternLayout   

  9. log4j.appender.appenderLocation.layout.ConversionPattern = [%d{yy-MM-dd HH:mm:ss:SSS}][%C-%M] %m%n   

  10. log4j.appender.appenderLocation.File = ../logs/hello.log   

  11. log4j.appender.appenderLocation.MaxFileSize = 10kb   

  12. log4j.appender.appenderLocation.MaxBackupIndex= 2

配置内容详细描述:

  1. log4j.rootLogger 表示log4j的总体配置(不知道怎么描述它,好比tree菜单的根节点吧),其中debug表示日志的输出级别,这里说说级别的意思还有info,warn,error,debug,trace,off,all;如果他们是有等级之分的,等级越高的可以显示,换句话说,只有等级上面配置的log4j.rootLogger = debug ,xxx:这里的配置只有大于等于debug等级的日志记录才会被输出,同样如果设置的为error,则只有等级大于等于error的时候才会被输出,至于等级的划分可以参考相关的dom4j-version.jar文件,找到其中的org.apache.log4j.Level;类有以下一些实例:        

              public static final Level OFF = new Level(2147483647"OFF"0);   

              public static final Level FATAL = new Level(50000"FATAL"0);  

              public static final Level ERROR = new Level(40000"ERROR"3);   

              public static final Level WARN = new Level(30000"WARN"4);   

              public static final Level INFO = new Level(20000"INFO"6);   

              public static final Level DEBUG = new Level(10000"DEBUG"7);   

              public static final Level TRACE = new Level(5000"TRACE"7);   

              public static final Level ALL = new Level(-2147483648"ALL"7);   

        第1个参数则为等级大小,参数值越大的数据,顺序越在前面。上面的代码其实就是安大小的顺序排序的。   

off意思是关闭日志,即代码里面的日志信息完全不记录,all则全部记录日志,如果这里写的是abc等其他的字符时,默认除trace以外的日志记录。

==============================================================  
appenderType表示日志显示类型,appenderLocation表示日志输出地,二者同为自定义参数。其中  
log4j.appender.appenderType表示日志显示在控制台;  
log4j.appender.appenderType.layout表示输出到控制台的日志显示类型为自定义格式  
log4j.appender.appenderType.layout.ConversionPattern表示自定义的输出格式,包含当前时间、当前类、线程名称、日志描述  
==============================================================  
log4j.appender.appenderLocation表示日志输出方式,上面的方式为文件达到一定大小时另外创建一个文件存储  
log4j.appender.appenderLocation.layout表示输出日志的显示方式,上面的设置表示自定义  
log4j.appender.appenderLocation.layout.ConversionPattern表示输出日志的显示格式,同appenderType  
log4j.appender.appenderLocation.File表示文件存储路径,默认为当前工程所在的目录,如果工程名称为MyLogs,fiel的文件完整路径为test.log,则会在,MyLogs目录下面的创建一个test.log文件,这里的文件路径可以写成:C:\\test.log,也可以写成:../logs/test.log,如此表示的意思为:当前目录的上一级目录的logs文件中,如果现在是用MyLogs\src\com.Test类中main方法执行则会在与MyLogs同一级目录下面创建一个文件,如果是在tomcat运行的话,一般会写成../../logs/test.log文件,  
log4j.appender.appenderLocation.MaxFileSize上面的配置文件大小为10KB,单位还有MB、GB等  
log4j.appender.appenderLocation.MaxBackupIndex表示最大的备份文件个数,上面为2个,表示当日志文件一直输出的时候,默认会写入test.log文件中,当test.log文件超过10KB时,会把这个10KB的文件更改个别名为test.log.1,超过10KB不到20KB时会继续创建test.log文件,然后超过20KB时继续继续产生一个test.log.2,文件继续写入如果再大于10KB时则替换新内容会替换test.log.1的内容,同理如果这里设置的值为100时,当日志内容过大时最多会有100个日志文件。  

 

/*************************如果只想记录在日志文件中,不想在控制台打印则*****************************/ 
#appenderType日志输出类型  
log4j.rootLogger = all,,appenderLocation  
#appenderLocation日志输出位置  
log4j.appender.appenderLocation = org.apache.log4j.RollingFileAppender  
log4j.appender.appenderLocation.layout = org.apache.log4j.PatternLayout  
log4j.appender.appenderLocation.layout.ConversionPattern = [%d{yy-MM-dd HH:mm:ss:SSS}][%C-%M] %m%n  
log4j.appender.appenderLocation.File = ../logs/hello.log  
log4j.appender.appenderLocation.MaxFileSize = 10kb  
log4j.appender.appenderLocation.MaxBackupIndex= 2 
/*************************************************************************************************/  

当然怎么配置dom4j的开发环境,我觉得很简单,没必要再描述,新建一个Project,然后到处dom4j-version.jar(一个jar就够),然后调用代码参考如下:

log.debug("..........');就OK了。


/**************************分割线*************************/
@date 2013-03-26
    上面说的日志实现依赖于log4j-version.jar 和 commons-logging-version.jar,且配置
log4j.properties

/**************************分割线**************************/ 
@date 2014-08-31
添加spring-jdbc模块的操作日志,可以添加如下日志配置:
log4j.logger.org.springframework.jdbc.core.JdbcTemplate=DEBUG ,如上这么配置能够输出JdbcTemplate类执行相关sql操作的sql语句;在实际中输出sql时还是挺有用的;
另log4j.appender.appenderType.layout.ConversionPattern = %p: [%d{yyyy-MM-dd HH\:mm\:ss\:SSS}] - (%F\:%M\:%L) - %m%n
这个配置可以实现输出到控制台的log中的类带有链接地址,点击之后可以直接链接到相关类里面,在实际中,也是很有用途的。

image.png

上面的图片中则是带链接的类,和此类输出的日志信息
 

无图无真相呀,不过上面的配置描述的很全面,如果有兴趣可以自己去实现了。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区