当前位置:文档之家› log4j日志输出规范

log4j日志输出规范

Log4j 使用参考规范目录简介 (3)1. 概述 (3)2. 库主件 (3)3. 主要组件 (3)配置 (4)1. 相关配置文件 (4)2. 详细配置说明 (5)3. 输出方式 (5)4. 输出格式 (6)调用 (7)注意问题 (7)参考文档 (8)1. 概述程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。

例如,跟踪语句(trace),结构转储和常见的System.out.println或printf调试语句。

log4j 提供分级方法在程序中嵌入日志记录语句。

日志信息具有多种输出格式和多个输出级别。

使用一个专门的日志记录包,可以减轻对成千上万的System.out.println 语句的维护成本,因为日志记录可以通过配置脚本在运行时得以控制。

log4j 维护嵌入在程序代码中的日志记录语句。

通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。

五级输出,依次为DEBUG、INFO、WARN、ERROR、FATAL。

使用者可根据不同的需求,设定不同的输出级别,则得到不同级别的输出结果。

(在正式生产环境中,一般设定为 warn)2. 库主件目前log4j 2.0 版本需要JAVA5(logging services designed for Java 5 and later);1.3 版不被推荐使用,我们使用的最多的是1.2版。

目前可download 的是1.2.17 版。

下载地址:/dyn/closer.cgi/logging/log4j/库文件一般为名为log4j.jar, 使用时加入lib路径下。

3. 主要组件Log4j有三个主要组件:loggers、appenders和layouts。

这三个组件协同工作,使开发人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。

Logger:记录器;Logger 负责处理日志记录的大部分操作。

Appender:挂载点;Appender 负责控制日志记录操作的输出。

Layout:布局;Layout 负责格式化Appender 的输出。

1. 相关配置文件Log4j 的配置文件可以使用XML 文件和property 文件。

这里我们主要使用log4j.properties 配置文件,其比较直观,便于修改和维护。

下面是一个log4j 配置文件的例子:log4j.rootLogger=warn, logfile, errorLogger, consolelog4j.appender.console=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}].apache=warn.yaic.app=warnlog4j.appender.logfile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.logfile.File=/app/domains/Appdomain.logs/dysub_log.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorLogger.File=/app/domains/Appdomain.logs/dysub_error.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.appender.errorLogger.Threshold=errorlog4j.logger.yafaLogger=trace, yafaLogger, consolelog4j.appender.yafaLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.yafaLogger.File=/app/domains/Appdomain.logs/dysub_yafa.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.additivity.yafaLogger = falselog4j.logger.auditLogger=trace, auditLogger, consolelog4j.appender.auditLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.auditLogger.File=/app/domains/Appdomain.logs/dysub_audit.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}[%-3p] %t %C %L: %m%nlog4j.additivity.auditLogger = falselog4j.logger.quartzJobLogger=trace, quartzJobLoggerlog4j.appender.quartzJobLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.quartzJobLogger.file=/app/domains/Appdomain.logs/quartzjob.logyout=org.apache.log4j.PatternLayoutyout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.additivity.quartzJobLogger = false.ibatis=warnlog4j.logger.java.sql.Connection=warnlog4j.logger.java.sql.Statement=warnlog4j.logger.java.sql.PreparedStatement=warn2. 详细配置说明使用者可设置五级输出,DEBUG、INFO、WARN、ERROR、FATAL,且有级别关系DEBUG<INFO<WARN<ERROR<FATAL, 只输出比设定级别高的log信息。

例如:如果设置级别为DEBUG,则输出所有五级信息;如设置级别为WARN,则只输出WARN,ERROR,FATAL三级信息,DEBUG 和INFO 不输出。

例如:log4j.rootLogger=warn, logfile, errorLogger, console设置apache的输出级别为warn,logfile, errorLogger, console为输出方式log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.logfile.File=/app/domains/Appdomain.logs/dysub_log.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%n第一行,设置每天产生一个日志文件第二行,设置输出路径为/app/domains/Appdomain.logs/第三行,设置输出的格式为自定义格式(PatternLayout)输出第四行,设置输出格式的模式3. 输出方式Log4j 允许日志请求被输出到多个输出源。

用Log4j 的话说,一个输出源被称做一个Appender。

Appender 包括console(控制台)、files(文件)、GUI components(图形的组件)、remote socket servers(socket 服务)、JMS(java 信息服务)、NT Event Loggers(NT的事件日志)和remote UNIX Syslog daemons(远程UNIX 的后台日志服务)。

它也可以做到异步记录。

一个logger 可以设置超过一个的appender。

设置格式为:log4j.appender.stdout= DailyRollingFileAppender*输出方式:org.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)ConversionPattern参数说明%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows 平台为"\r\n",Unix 平台为"\n"%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

举%L 输出日志事件在代码中的位置,即行号4. 输出格式MDC内部使用了类似map的机制来存储信息,相对应的方法,MDC.put(key, value);在配置PatternLayout的时候使用:%x{key}来输出对应的value例如:String remoteAddr = request.getRemoteAddr();MDC.put("ip", remoteAddr);在log4j.properties文件中作如下的配置即可yout.ConversionPattern=-d{yyyy/MM/dd HH:mm:ss,SSS} [%X{ip}]-[%p]-[%c] %m%n如果在项目中有过滤器,你可以把获取ip 的方法直接定义在过滤器中,然后在配置文件中配置获取ip的显示就可以了根据以上ConversionPattern参数说明,我们规范定义的输出为%d{yyyy-MM-dd HH:mm:ss,SSS} [%X{ip}] -[%p]-[%c] (%L): %m%n输出结果:2016-10-12 {18:15:51,593] [10.1.100.100]{DEBUG} com.test.LookNode (66):This is a debug message...调用在程序中调用比较简单,在将log4j.jar 包引入后,即可使用了。

相关主题