Log4j日志格式等

一、日志格式说明
 %d - 时间,常用格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}
 %m - 日志内容
 %n - 换行  
 %p - 日志级别
 %% - 输出%符号
 %t - 当前线程名
 %l - 同 %C%M%F%L
 %C - java类名  
 %M - java方法名 
 %F - java源文件名  
 %L - java源码行数 
 %X{ip} - 显示MDC中的ip值
 %x - 显示NDC堆栈中的值

二、日志配置

log4j.rootCategory=INFO,test
log4j.appender.test=org.apache.log4j.RollingFileAppender
log4j.appender.test.File=${myweb.root}/WEB-INF/logs/web.log
log4j.appender.test.MaxFileSize=10MB
log4j.appender.test.MaxBackupIndex=0
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d - %p - %C%M%F%L - [%X{ip}]- [%x] - %m%n
 1)如果用RollingFileAppender或者FileAppender时,可以通过${webapp.root}来定位到该项目发布目录下,这是spring把web目录的路径压入到了webapp.root的系统变量。然后log4j.properties 就可以这样定义logfile位置log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/test.log 如果有多个web应用,webapp.root变量重复,可以在context-param里定义webAppRootKey。
 
<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>
<context-param>
	<param-name>webAppRootKey</param-name>
	<param-value>myweb.root</param-value>
</context-param>

log4jRefreshInterval:指定60s扫描1次配置,动态改变

2) log4j.rootCategory=INFO,test,表示将info及以上的日志输出到名字为test的appender。OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息。

3)log4j.appender.test=xxx,定义输出端类型,可以是:

org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),

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

4)log4j.appender.test.layout=xxx,定义layout类型,可以是:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

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

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

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

 5) log4j.appender.stdout.layout.ConversionPattern=xxx,如果使用pattern布局,就要指定打印信息的具体格式。

 6)log4j.appender.test.MaxFileSize=10MB,log4j.appender.test.MaxBackupIndex=0,文件MaxFileSize超过10m则滚动到新的日志文件,MaxBackupIndex指定可以产生的滚动文件的最大数,老的滚动文件删除。  

 

三、MDC、NDC:log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息,可以用在filter中。

String ip = request.getRemoteAddr();
NDC.push(ip);

 MDC内部使用了类似map的机制来存储信息。

String ip = request.getRemoteAddr();
MDC.put("ip", ip);

 

 四、

 

猜你喜欢

转载自mingren135.iteye.com/blog/1880835