配置log4j

1、log4j的三个组件

a、Logger     日志记录器,负责收集处理日志记录     (如何处理日志)

b、Appender   日志输出目的地,负责日志的输出  (输出到什么 地方)

c、Layout    日志格式化,负责对输出的日志格式化(以什么形式展现)

2、level

OFF       关闭

FATAL       致命的

ERROR      错误

WARN         警告

INFO        信息

DEBUG        调试

ALL        所有 

注:如果logger的Level设置为INFO,那么系统只输出INFO以及以上(WARN、ERROR、FATAL)信息

3、Appender

   日志输出的目的地,可以是Console(控制台)、file(文件)、JDBC、JMS等

  常用的集中Appender有:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个文件)

org.apache.log4j.RollingFileAppender(文件达到某一大小的时候产生一个新文件)

org.apache.log4j.WriteFileAppdender(将日志信息以流形式发送到任意指定的地方)

4、Layout

使用指定的Layout来展示(格式化)日志,常见的Layout有: 
org.apache.log4j.HTMLLayout(以HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息),更多

5、Log4j的配置

  第一步:复制log4j-1.2.17.jar至lib下

  如项目使用了maven,可配置pom.xml

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

  第二步:在项目里的src下新建log4j.propertis(或在web.xml里配置listener)

下面定义日志输出级别是 INFO,并且配置了2个输出目的地,一个是R,一个是Console(输出目的地名称可以任意取)

log4j.rootLogger = INFO,R,Console

//日志最低的输出级别
log4j.appender.R.Threshold=INFO
//每天产生一个文件DailyRollingFileAppender  
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
//file 属性  指定产生日志文件的保存位置及文件名,这里是windows下的配置
log4j.appender.R.File=D:/log/logtest.log
//日期格式化输出文件
log4j.appender.R.DatePattern='_'yyyy-MM-dd
//日志布局方式
log4j.appender.R.layout=org.apache.log4j.PatternLayout
//日志文件中日志的格式
log4j.appender.R.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} test %-5p [%c] - %m%n

//这里使用org.apache.log4j.ConsoleAppender指定要把日志输出到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} test %-5p [%c] - %m%n

log4j.logger.com.neusoft=DEBUG   
log4j.logger.com.opensymphony.oscache=ERROR   
log4j.logger.net.sf.navigator=ERROR   
log4j.logger.org.apache.commons=ERROR   
log4j.logger.org.apache.struts=WARN   
log4j.logger.org.displaytag=ERROR   
log4j.logger.org.springframework=DEBUG   
log4j.logger.com.ibatis.db=WARN   
log4j.logger.org.apache.velocity=FATAL   

  layout.ConversionPattern相应参数含义

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

  如果项目使用了框架,可以在web.xml利用Spring配置log4j  

在web.xml中添加配置
<!-- 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)--> 
下面使用了classpath 参数指定log4j.properties文件的位置,这样log4j的配置文件就不用非要放到src的下面
<context-param>
   <param-name>log4jConfigLocation</param-name>
 <param-value>classpath:config/log4j.properties</param-value>
</context-param> 
使用spring的监听器,当应用启动时来读取log4j的配置文件
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

  第三步:在需要使用日志的类里加

Logger log = Logger.getLogger(Test.class);
..
BasicConfigurator.configure();

  在方法里加log.info("info")、log.debug("bug")、log.error("error")、log.warn("warn")等

posted @ 2015-12-28 19:07  大白虾  阅读(158)  评论(0)    收藏  举报