一、Login4j设置详细说明 (log4j.properties)
1、log4j.rootCategory = INFO,stdout,R
-----此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码中,可以任意起名。
等级可以分为:INFO、OFF、FATAL、ERROR、WARN、DEBUG、ALL;
OFF:则不会打出任何信息;
INFO则显示INFO、WARN、ERROR的信息
2、log4j.appender.stdout = org.apache.log4j.ConsoleAppender
------此句为定义名为stdout的输出端是哪种类型,可以定义以下类型:
org.apache.log4j.ConsoleAppender:控制台
org.apache.log4j.FileAppender:文件
org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件
org.apache.log4j.RollingFileAppender:文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender:将日志信息以流格式发送到任意指定的地方
3、log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
------此句为定义名为stdout的输出端的layout是哪种类型,可以是以下类型:
org.apache.log4j.HTMLLayout:以HTML表格形式布局
org.apache.log4j.PatternLayout:可以灵活的指定布局模式
org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等信息
4、log4j.appender.stdout.layout.ConversionPattern = [QC]%p[%t]%c.%M(%L) | %m%n
如果使用PatternLayout就要指定打印信息的具体格式ConversionPattern,打印参数如下:
%p:输出日志信息的优先级,即DEBUG、INFO、WARN、ERROR、FATAL
%d:输出日志时间点的日期或者时间,默认格式为ISO8601,也可以在其后指定格式,如
%d{yyy MMM dd HH:mm:ss:SSS}
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出日志信息所属的类目,通常就是所在类的全名
%t:输出产生该日志事件的线程名
%l:输出日志事件的发生位置,相当于%c.%m(%f.%l)的组合,包括类目名、发生的线程,以及在代码中的行数
%x:输出和当前线程相关联的NDC,尤其用到像java servlet这样的多客户多线程的应用中
%%:输出一个%字符
%F:输出日志消息产生时所在的文件名称
%L:输出代码中的行号
%m:输出代码中指定的消息,产生的日志具体信息
%n:输出一个回车换行符
[QC]:是log信息的开头,可以为任意字符,一般为项目简称
5、log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
此句定义名为R的输出端的类型为每天产生一个日志文件
6、log4j.appender.R.File = D:\\Tomcat\\qc.log
7、log4j.logger.com.neusoft = DEBUG
指定com.neusoft包下的所有类的等级为DEBUG, 可以把com.neusoft改为自己项目所用的包名
8、log4j.logger.org.hibernate = DEBUG
log4j.logger.org.hibernate.ps.PreparedStatementCache = WARN
此两句是hiberante的包的所有类等级为DEBUG
二、动态的改变日志的级别和策略
即修改log4j.properties,不需啊哟重启WEB应用,这个需要在
web.xml中配置一下
在web.xml中的详细设定如下:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!-- 需要添加spring-web.jar包,否则用发生错误信息 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
说明:
其中第二部分就是能够动态修改log4j.properties的关键,容器会每60秒扫描log4j的配置文件 ,有一点就是我们如果用RollingFileAppender或者 FileAppender时,可以通过${webapp.root}来定位到服务器的发布的该项目下,这是spring把web目录的路径压入到了 webapp.root的系统变量。然后,在log4j.properties 里就可以这样定义logfile位置log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log 如果有多个web应用,怕webapp.root变量重复,可以在context-param里定义webAppRootKey。当我们定义完log4j.properties后,剩下的就是在需要记录的class中new 出Logger了。