Log4J介绍

##Log4J是什么?

Log4J是Apache基金会下一个开源的日志管理项目,可以高度自定义日志的收集过程,和收集粒度,以及收集后日志的输出位置,可以输出到控制台,文件,数据库,甚至是远程服务器,这些操作仅仅只需要通过Log4J的配置文件进行定义后便可实现,是一个非常而且强大的日志收集库。除此之外,Log4J提供多语言兼容,可以在Java,Python,.Net等语言环境下的服务器中使用,可以对服务集群的日志进行统一管理。

##Log4J学习

Log4J三大组件:

  1. Logger(记录器):只管记录日志(根据日志级别记录),不管日志存储在什么地方。
  2. Appender(存放器):将Logger记录的日志,存放到配置文件中所指向的地方,只处理日志的存放过程。
  3. Layout(布局):将日志进行格式化后再输出,也就是说他是用来让日志看这更顺眼的。当然如何算顺眼,由你在配置文件中设定。

一个Logger可以有多个Appender,可以同时输出到多个设备上,每一个Appender都有一个Layout来格式化输出内容。

###Logger 组件
有一个超类,log4j.rootLogger这个超类永远存在,可以使用Logger类中的getRootLogger()方法来获得这个对象的引用。

Logger组件的继承关系:

  1. 如果子类Logger没有定义日志级别,那么它将继承父类的日志级别。
  2. 如果把子类Logger的组件的additivity设置为false(默认为true),那子类将不会继承父类的Appender,否则将继承父类所有的Appender。

###Appender 组件
Appender用来决定日志要输出到什么地方,支持一下目的地:

  1. 控制台Console
  2. 文件File
  3. GUI组件
  4. 套接口服务器(Remote Socket Server)
  5. NT的事件记录器
  6. UNIX守护进程(输出到某个进程中去)(待验证)

###Layout 组件
Layout组件决定日志的输出格式,有如下几类:

  1. org.apache.log4j.HTMLLayout 以Html格式输出日志
  2. org.apache.log4j.PatternLayout 以自定义Pattern的模式输出日志
  3. org.apache.log4j.SimpleLayout 包含日志信息的级别和,日志字符串
  4. org.apache.log4j.TTCCLayout 包含日志产生的线程,时间,类别等详细信息

##日志级别
日志级别分为5种:

  • fatal 严重错误,会导致系统崩溃
  • error 虽然出错,但是系统依然可以运行
  • warn 警告,系统此处会有发生潜在错误的可能性
  • info 一般的运行时信息
  • debug 调试信息,粒度很细

除了上述5中级别外,还有两种特殊级别的日志分类:

  • off 关闭日志,级别最高
  • all 打开日志,级别最低

以上日志的级别高低排序如下:
off > fatal > error > warn > info > debug > all
当日配置的志级别为info时所有的Debug日志将不会输出。

Log4J建议使用上述中的4种分别是:error、warn、info、debug

##Log4J 应用
对于应用,无非就是配置和使用,先来看看如何在程序中配置Log4J

###Log4J的配置
Log4J支持XML配置和properties文件两种方式进行配置,此处介绍后一种。

####set Logger
log4j.rootLogger=INFO,infoLog,file

####infoLog logger
log4j.appender.infoLog=org.apache.log4j.ConsoleAppender // 配置Appender
log4j.appender.infoLog.layout=org.apache.log4j.PatternLayout // 配置Layout
log4j.appender.infoLog.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

####file logger
log4j.appender.file=org.apache.log4j.FileAppender // 定义Appender
log4j.appender.file.File=log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout // 定义Layout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n// 自定义Layout格式

####Error log
log4j.errorLog=ERROR, errorLog

####errorLog logger
log4j.appender.errorLog=org.apache.log4j.FileAppender
log4j.appender.errorLog.File=errorLog.txt
log4j.appender.errorLog.layout=org.apache.log4j.PatternLayout
log4j.appender.errorLog.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

详细的使用请参考Log4J的API

##Log4J在程序中的应用

  1. 先将log4j-xxx.jar导入工程中。
  2. 新建log4j.properties配置文件,并加入配置。
  3. 在程序中使用Log4J的API。

##参考:
日志级别
Log4J的使用