一、介绍
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
log4j的历史
-
始于1996年初的E.U. SEMPER (安全电子市场为欧洲)跟踪API的项目。
-
不计其数的改进,在几个大量的工作之后,API已经发展成为log4j,一个流行的日志记录包为Java。
-
该软件包是Apache软件许可证,由开源认证是一个不折不扣的开源许可证下发布。
-
最新log4j的版本,包括完整的源代码,类文件和文档可以在这里找到 http://logging.apache.org/log4j/.
Log4j使用的几个关键点?
根记录器(Logger),输出端(appenders)和布局(layouts)
a)定义根记录器的格式为
log4j.rootLogger = [ level ], appendName1, appendName2, „appendNameN。同一个记录器可
有多个输出端。PS:level的级别(此级别可以自定义,系统默认提供了以下级别)
◆debug//调试信息
◆info//一般信息
◆warn//警告信息
◆error//错误信息
◆fatal//致命错误信
b)定义一个appender的输出目的地的格式为
log4j.appender.appenderName = fully.qualified.name.of.appender.class。log4j
提供了以下几种常用的输出目的地:
◆org.apache.log4j.ConsoleAppender,将日志信息输出到控制台
◆org.apache.log4j.FileAppender,将日志信息输出到一个文件
◆org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件
◆org.apache.log4j.RollingFileAppender,将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名,如为example.log的文件会改名为example.log.1,同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸,又会自动把文件改名为example.log.2,同时产生example.log文件。依此类推,直到example.log. MaxBackupIndex,MaxBackupIndex的值可在配置文件中定义。
◆org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。
◆org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中。
c)输出格式(布局)layout Log4j
提供了一下几种布局:
◆org.apache.log4j.HTMLLayout,以HTML表格形式布局
◆org.apache.log4j.PatternLayout,可以灵活地指定布局模式
◆org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串
PS:ConversionPattern参数的格式含义
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
log4j 特性:
-
log4j的是线程安全的
-
log4j是经过优化速度的
-
log4j是基于一个名为记录器的层次结构
-
log4j的支持每个记录器多输出追加器(appender)
-
log4j支持国际化。
-
log4j并不限于一组预定义的设备
-
日志行为可以使用配置文件在运行时设置
-
log4j设计从一开始就是处理Java异常
-
log4j使用多个层次,即ALL,TRACE,DEBUG,INFO,WARN,ERROR和FATAL
-
日志输出的格式可以通过扩展Layout类容易地改变
-
日志输出的目标,以及在写入策略可通过实现Appender程序接口改变
-
log4j 会故障停止。然而,尽管它肯定努力确保传递,log4j不保证每个日志语句将被传递到目的地。