日期:2014-05-17 浏览次数:20787 次
http://www.blogjava.net/flysky19/articles/98414.html
?
成功配置tomcat的log4j日志系统,格式:HTML+每天以yyyy-mm-dd.log命名的日志文件
一、引言:
??? 实习单位让用log4j配置webapp的日志系统,要求产生的日志文件是html格式,并且是每天以yyyy-mm-dd日期格式命名的日志文件。
??? 这个曾经让自己费神了一段时间,最近花了两天时间总算配置成功了!不过配置成功的是tomcat的,不是单个webapp的,现把步骤记录下来,晚上再配置webapp的。先写一步一步的操作,后面再讲解一些log4j的关键知识点。
二、一步一步配置tomcat log4j日志系统
第一步:下载log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.
第二步:新建log4j.properties文件,放到$CATALINA_HOME/common/classes/目录下.
第三步:写配置文件log4j.properties:
#log4j.properties
log4j.rootLogger=warn, A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.file=F:/UserWorkSpace/jiangcm/Tomcat 5.0/logs/tomcat_log_
log4j.appender.A1.DatePattern=yyyy-MM-dd'.html'
log4j.appender.A1.layout=org.apache.log4j.HTMLLayout?
log4j.logger.org.apache=warn
注解:
1)你只需要修改这一行:
log4j.appender.R.File=F:/UserWorkSpace/jiangcm/Tomcat 5.0/logs/tomcat_log_
将路径修改为你的Tomcat的logs目录,如果你的系统环境配置了CATALINA_HOME环境变量,那么可以使用${catalina.home}/logs/tomcat_log_进行配置即可。
2)上面的log4j配置仅记录比较重要的日志(警告warning、错误error、致命错误fatal)到Tomcat的logs目录下的tomcat_log_ 文件中,每天晚上过0点的第一条信息会触发重命名tomcat_log_,将当前日期附加在tomcat_log_ 文件名中,并产生新的tomcat_log_ 文件。
3)使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用 DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。如上述log4j.properties配置文件就会每天产生一个html文件,每个html文件只记录当天的log信息。
4)设置了DailyRollingAppender 以后如果配置项里面设置了文件的最大值,那么应该去掉,否则可能不能产生以天为单位的日志。
5)Log4j的org.apache.log4j.DailyRollingFileAppender源码223行
scheduledFilename = fileName+sdf.format(new Date(file.lastModified()));
也就是说备份的日至文件都是文件名后面加上你所配的DatePattern格式化后的字符串。除非你自己写个appender。
6)上述log4j.properties生成的日志文件,名称格式如下:tomcat_log_2007-02-24.html;
注意:生成的第一个日志文件格式如下:tomcat_log_,即只是A1.file中设置的名称;生成的第二个日志文件之后的文件命名才会加上所配的DatePattern格式化后的字符串。
7)配置DailyRollingFileAppender格式的日志系统,如果要验证生成的日志文件结果,要注意一点,需要关闭tomcat,修改系统日期为第二天的日期,再重启tomcat,这样才能自动生成一个新的日志文件;因为要修改日期才能触发产生新的日志文件。
第四步:重启tomcat.
ok,现在就已经在tomcat中配置好log4j了。
第五步:验证
? 验证上述配置的log4j日志系统:
??? 利用tomcat自带的web应用程序jsp-examples,现在配置好了日志系统,那么如果在jsp-examples这个web应用程序的.java文件中使用了日志,则IE访问这个web app的jsp文件时,就应该能够自动产生日志文件到配置的路径中。
??? 步骤:
??? a)进入目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp-examples\WEB-INF\classes\dates”;
??? b)修改JspCalendar.java文件,在这个文件中加上日志的代码,如下所示:
package dates;
import java.text.DateFormat;
import java.util.*;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.*;
public class JspCalendar {
??? Calendar? calendar = null;
??? static Logger logger = Logger.getLogger(JspCalendar.class);
??? public JspCalendar() {
? logger.debug("This is debug.");
? logger.info("This is an info.");
? logger.warn("This is a warning.");
? logger.error("This is an error.");
? logger.fatal("This is a fatal error.");
?
??? calendar = Calendar.getInstance();
??? Date trialTime = new Date();
??? calendar.setTime(trialTime);
??? }
??? public int getYear() {
?
??? return calendar.get(Calendar.YEAR);
??? }
……
}
注释:
加上的代码有两部分,一是构造一个logger对象,一是输出logger信息,如下所示,其他代码没动:
static Logger logger = Logger.getLogger(JspCalendar.class);
? logger.debug("This is debug.");
? logger.info("This is an info.");
? logger.warn("This is a warning.");
? logger.error("This is an error.");
? logger.fatal("This is a fatal error.");
??? c)重新编译JspCalendar.java;
??? d)修改日期为2007-02-26;
??? e)重启tomcat;
??? f)在IE中输入“http://localhost:8086/jsp-examples/dates/date.jsp”,运行该jsp文件;
??? g)这时在目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下看到了新产生的日志文件:tomcat_log_2007-02-25.html.
???
??? ok!说明日志系统配置成功啦,啦~!!
三、遗留问题
3.1 上述配置的是tomcat的日志系统,应该是对tomcat下的所有webapp都起作用,现在自己只验证了jsp-examples这个webapp,还没有验证过其他的web