##Log4J是什么?
Log4J是Apache基金会下一个开源的日志管理项目,可以高度自定义日志的收集过程,和收集粒度,以及收集后日志的输出位置,可以输出到控制台,文件,数据库,甚至是远程服务器,这些操作仅仅只需要通过Log4J的配置文件进行定义后便可实现,是一个非常而且强大的日志收集库。除此之外,Log4J提供多语言兼容,可以在Java,Python,.Net等语言环境下的服务器中使用,可以对服务集群的日志进行统一管理。
##Log4J学习
Log4J三大组件:
- Logger(记录器):只管记录日志(根据日志级别记录),不管日志存储在什么地方。
- Appender(存放器):将Logger记录的日志,存放到配置文件中所指向的地方,只处理日志的存放过程。
- Layout(布局):将日志进行格式化后再输出,也就是说他是用来让日志看这更顺眼的。当然如何算顺眼,由你在配置文件中设定。
一个Logger可以有多个Appender,可以同时输出到多个设备上,每一个Appender都有一个Layout来格式化输出内容。
###Logger 组件
有一个超类,log4j.rootLogger这个超类永远存在,可以使用Logger类中的getRootLogger()方法来获得这个对象的引用。
Logger组件的继承关系:
- 如果子类Logger没有定义日志级别,那么它将继承父类的日志级别。
- 如果把子类Logger的组件的additivity设置为false(默认为true),那子类将不会继承父类的Appender,否则将继承父类所有的Appender。
###Appender 组件
Appender用来决定日志要输出到什么地方,支持一下目的地:
- 控制台Console
- 文件File
- GUI组件
- 套接口服务器(Remote Socket Server)
- NT的事件记录器
- UNIX守护进程(输出到某个进程中去)(待验证)
###Layout 组件
Layout组件决定日志的输出格式,有如下几类:
- org.apache.log4j.HTMLLayout 以Html格式输出日志
- org.apache.log4j.PatternLayout 以自定义Pattern的模式输出日志
- org.apache.log4j.SimpleLayout 包含日志信息的级别和,日志字符串
- 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在程序中的应用
- 先将log4j-xxx.jar导入工程中。
- 新建log4j.properties配置文件,并加入配置。
- 在程序中使用Log4J的API。