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文件两种方式进行配置,此处介绍后一种。
对Logger的配置
#Log4J Logger
#配置root Logger
#log4j.rootLogger = [log level],[appender…]
log4j.rootLogger = INFO,console
#自定义一个名为MyLogger的Logger
log4j.logger.MyLogger = WARN #级别为warn,以为着info和debug级别的日志不会输出
#定义一个继承MyLogger的Logger
log4j.logger.MyLogger.MySonLogger = ,file #”,file”表示日志级别继承自MyLogger,输出到文件
对Appender的配置
#定义一个输出到console的Appender
log4j.appender.console = org.apache.log4j.ConsoleAppender
#对于上述定义如果想对log4j的默认定义修改的话,可以继承自它并覆写相应的方法
#定义一个输出到File的Appender
log4j.appender.file = org.apache.log4j.FileAppender
#日志输出的文件
log4j.appender.file.File = log.txt
对Layout的配置
#设置file的格式化类型为HTML
log4j.appender.file.layout = org.apache.log4j.HTMLLayout
#设置console的格式化类型为SimpleLayout
log4j.appender.console.layout = org.apache.log4j.SimpleLayout
详细的使用请参考Log4J的API
网友评论