web应用的日志不一定全部都要打到catalina.out文件中,可以根据需求,将不同的日志输出到不同的文件中,所以可以在log4j.properties日志文件中配置多个输出日志的模式,每个模式都会有一个名称,比如如下的名称“web”
1. 一般在类中通过如下方式获取LOG对象
protected static final Log LOG = LogFactory.getLog("web");
参数web实际就是一个特定日志的标示,即一个特定日志打印的名称
它的具体配置在log4j.properties文件中,具体配置如下
2. log4j文件的配置
log4j.logger.<strong>web</strong>=INFO,WebLog
log4j.appender.WebLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.WebLog.Threshold=INFO
log4j.appender.WebLog.File=${catalina.home}/logs/bk_web.log
log4j.appender.WebLog.layout=org.apache.log4j.PatternLayout
log4j.appender.WebLog.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH:mm:ss} %m %n
上述log4j.logger.web中的web其实就跟上述的web对应,这一段配置就说明了名称为web的日志要打印到${catalina.home}/logs/bk_web.log文件中,
log4j.appender.WebLog.layout.ConversionPattern的具体配置说明如下:
%m 输出代码中指定的消息%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss ,SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
ConversionPattern实际配置的就是在使用打印日志的语句,比如如下语句打印日志的时候
LOG.error("No TasksForRev to assign to user:" + this.getUserId())
在这行日志的开头打印一些时间信息等,比如根据如上配置,打印出来的结果就是如下:
ERROR 2016-07-19 16:51:47 No TasksForRev to assign to user:374075382