Log4j作为一个强大的日志包,是非常有必要学会使用的,其实也不难
它有xml配置,与properties配置两种,我喜欢properties这种,很明了
一个简单的配置如下:
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=D-D %d{ABSOLUTE} %30.30c %5.5p %m%n
log4j.logger.org.directwebremoting.log.startup=INFO //关注部分,也就什么需要日志记录
复杂一点的:
- log4j.rootCategory=INFO, stdout , R
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=${应用名.root}/WEB-INF/logs/xx.log
- log4j.appender.R.MaxFileSize=1024KB
- log4j.appender.R.MaxBackupIndex=10
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n
- log4j.logger.org.springframework=DEBUG
- log4j.logger.org.hibernate=DEBUG
- log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
- log4j.logger.com.lagooo.as=DEBUG
Log4j有3个东西:
1)logger 就是:什么是你关心的,需要记录日志的
2)appender 输出的方式:控制台?文件?
3)layout 输出的样式: 日志记录的格式
看上的第一句:
log4j.rootLogger=INFO, stdout
是跟logger ,它的记录等级为INFO,名字叫 stdout (默认解释为标准输出,随便取名字的)
日志等级有5种:
DEBUG、INFO、WARN、ERROR、FATAL(这个是由轻到重排列)
日志等级为INFO意思是,大于等于INFO等级的才进行记录!(也就是DEBUG等级的忽略)
往下看是:log4j.appender.stdout=org.apache.log4j.ConsoleAppender
也就是appender,控制记录日志的方式,以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
(看仔细点,可以看到appender.stdout=xxx ,也就是说,log4j可以定义多个logger,用不同的方式记录)
再下来就是 layout部分:
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=D-D %d{ABSOLUTE} %30.30c %5.5p %m%n
这个是输出的格式,这个内容比较多,篇幅问题,在这里就不说了,有兴趣的自己
一搜,肯定有
最下面是,logger的内容
也就是指定什么是你关系的部分,需要做日志的部分
log4j.logger.org.directwebremoting.log.startup=INFO 这个是只想买启动的时候做启动日志
日志等级为INFO(也就是DEBUG等级就不录)
Log4j常常在Spring中使用
用法:
在web.xml加入
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>\WEB-INF\classes\log4j.properties</param-value> //配置log4j路径
</context-param>
<listener> // 使用了spring的 listener 在项目启动的时候,启动log4j
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
然后在log4j.properties中加入最上面的配置,就可以使用了
如果你关心Hibernate信息,想为它做日志的话,可以加入:
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
关心spring的话:
log4j.logger.org.springframework=WARN