%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%n1)如果用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);
四、