浏览 18845 次
锁定老帖子 主题:log4j配置webapp日志系统
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-07
Log4j的中文文档 (这是根据最新的log4j(jakarta-log4j-1.2.8)的开发包自带文档的manual翻译的) http://dev.csdn.net/develop/article/29/29441.shtm 对应的英文原文: Short introduction to log4j http://logging.apache.org/log4j/docs/manual.html 2.步骤 1)log4j.jar放到jsp-examples\WEB-INF\lib下; 2)在jsp-examples下新建properties\log4j.properties; 3)log4j.properties内容: #log4j.properties log4j.rootLogger=info, A1 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.file=${webappHome}/logs/tomcat_log_ log4j.appender.A1.DatePattern=yyyy-MM-dd'.html' log4j.appender.A1.layout=org.apache.log4j.HTMLLayout 4)“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp-examples\”新建上述属性文件所设置的存放 日志文件的logs文件夹; 注释: tomcat_log_是文件名,可以不用预先新建该文件;如果预先建了,则日志文件直接为tomcat_log_2007- 03-05.html格式,如果之前无该文件,在第一次生成的日志文件名称为tomcat_log_; 5)进入目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp-examples\WEB-INF\classes”,新 建“log4j\Log4JInit.java”; 6)Log4JInit.java内容: package log4j; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.log4j.*; public class Log4JInit extends HttpServlet { public void init() throws ServletException { String prefix = getServletContext().getRealPath("/"); String test = getServletContext().getRealPath(""); System.out.println(prefix); System.out.println(test); System.setProperty("webappHome", test); String file = getServletConfig().getInitParameter("log4j-config-file"); System.out.println(prefix+file); // 从Servlet参数读取log4j的配置文件 if (file != null) { PropertyConfigurator.configure(prefix + file); } } public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {} public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {} } 注意: “System.setProperty("webappHome", test);”这行代码要出现在“PropertyConfigurator.configure (prefix + file);”这行代码之前;因为这样才给"webappHome"设置值了,log4j.properties文件中的“ log4j.appender.A1.file=${webappHome}/logs/tomcat_log_”中的“${webappHome}”这个环境变量才被 赋值了,否则无法输出日志文件; 7)设置“jsp-examples\WEB-INF\web.xml”,使上述Log4JInit.java这个servlet自动启动,在web.xml 中添加: <servlet> <servlet-name>log4jinit</servlet-name> <servlet-class>log4j.Log4JInit</servlet-class> <init-param> <param-name> log4j-config-file </param-name> <param-value>/properties/log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件 放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方 便管理。 8)在webapp中使用log4j;进入目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp- examples\WEB-INF\classes\dates”,修改JspCalendar.java,加上日志信息: //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); } …… //其他内容不变; } 9)修改系统日期,这样才能手工触发按日生成的日志; 10)重启tomcat; 11)在IE中输入“http://localhost:8086/jsp-examples/dates/date.jsp”; 12)查看日志目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp-examples\logs”,耶!生成 以日期命名的html日志文件tomcat_log_2007-03-05.html了!哈哈,太开心了! 注释: 1.tomcat本身也会自动按日生成日志文件,在目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下; 2.jdk如果无法编译servlet,需要在tomcat\common\lib下把servlet-api.jar拷贝到jdk\jre\lib下; 问题: 1.把tomcat_log_2007-03-05.html文件名改为:jsp-examples_log_2007-03-05.html; 2.xml配置方式有待实践和学习; 参考资料: 1.http://www.3doing.net/forums/printpage.asp?BoardID=11&ID=184 2.http://wangluwww.spaces.live.com/blog/ 3.Log4j的中文文档 (这是根据最新的log4j(jakarta-log4j-1.2.8)的开发包自带文档的manual翻译的) http://dev.csdn.net/develop/article/29/29441.shtm 4.http://www.iteye.com/post/126014 怕麻烦的话可以考虑放应用下的某一个目录下,整个Servlet,专门用来设置环境变量和读取log4j的配置 文件 ,初始化Servlet的时候,应用程序的目录是固定的 可以通过System.setProperty("webappHome",this.getServletContext().getRealPath(""));来设置当前 应用的目录的绝对路径为java内部的环境变量,在log4j的配置文件里面用${webappHome}/WEB- INF/conf/log/Application.log 来配置该文件的绝对路径就可以了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-08
谢谢 楼主 收藏一下 以备查看
|
|
返回顶楼 | |