log4j配置webapp日志系统
1.基础知识:
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.javaeye.com/post/126014
怕麻烦的话可以考虑放应用下的某一个目录下,整个Servlet,专门用来设置环境变量和读取log4j的配置
文件 ,初始化Servlet的时候,应用程序的目录是固定的
可以通过System.setProperty("webappHome",this.getServletContext().getRealPath(""));来设置当前
应用的目录的绝对路径为java内部的环境变量,在log4j的配置文件里面用${webappHome}/WEB-
INF/conf/log/Application.log 来配置该文件的绝对路径就可以了
log4j配置webapp日志系统的更多相关文章
- springboot项目配置logback日志系统
记录springboot项目配置logback日志文件管理: logback依赖jar包 SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包: < ...
- java配置slf4j日志系统
首先要导入的包: import: 每个类中加入下面,其中 RdiFtpDownload.class 是当前的类名.class 然后就可以打日志了: 配置 log4j.properties log4j. ...
- log4j配置单独日志文件输出
log4j.logger.batteryHistory=ERROR,BD log4j.appender.BD=org.apache.log4j.FileAppender log4j.appender. ...
- log4j配置独立日志方法
不使用类,而是使用loggerName来创建日志: #json是用java代码创建logger时用name,而不是jsonlog,注意,不需要在rootLogger中再配置,否则其它无关信息也将输出到 ...
- log4j配置输出日志文件
在测试程序时,有时候运行一次可能需要很久,把日志文件保存下来是很有必要的,本文给出了scala程序输出日志文件的方式,同时使用本人的另一篇博客中介绍的将log4j.properties放到程序jar包 ...
- log4j配置生成日志保存在数据库
利用MDC可以存储参数,MDC原理:相当于一个map将值存储起来,调用时可以根据key将自定义的在值存入对应位置(数据库或文件等).使用: 配置文件:log4j.properties ### dire ...
- Django中配置自定义日志系统
将
- 成功配置TOMCAT的LOG4J日志系统,格式:HTML+每天以YYYY-MM-DD.LOG命名的日志文件
关于log4j.properties文件在web项目中放的位置,找过很多,最后实践结果是: 一.web项目 二.放在src的目录里面,然后项目生成后会自动在\WEB-INF\classes文件里有份l ...
- 配置Tomcat的日志系统
成功配置tomcat的log4j日志系统,格式:HTML+每天以yyyy-mm-dd.log命名的日志文件 一.引言: 实习单位让用log4j配置webapp的日志系统,要求产生的日志文件是html格 ...
随机推荐
- SharePoint 优化显示WebParts
在开发sharepoint中,经常遇到需要自定义显示列表中的一部分作为导航的内容, 如公告栏,新闻链接,最新动态等.... 我们通常需要显示一个列表的标题,并且限制字符长度, 外加一些条件,如按创建的 ...
- emulatorarm.exe已停止工作
今天使用ADT 打开android模拟器突然发现模拟器报错,[emulatorarm.exe已停止工作],昨天还是好好的,不知道为什么,重建新的模拟器还是这样. 解决办法: 更改ram大小为 512M ...
- 原型prototype -- 深入理解javascript
/* 原型Prototype */ //一.原型 //原型使用一 var calculator = function (dlg, tax) { this.dlg = dlg; this.tax = t ...
- 不用安装语言包,教你将PS界面语言修改成默认语言(英语)
地址:http://www.cnblogs.com/Loonger/p/5112020.html 嗯,干脆利落,直接上教程.超简单的方法.(该方法可以随时在你已有语言[非英语]和PS默认语言[英语]之 ...
- c++ 格式化printf
类型为uint64_t的变量,使用printf进行打印时,需要区分操作系统: 64位系统:使用%ld 32位系统:使用%llu #include<stdio.h>#include < ...
- HDU 5629 Clarke and tree dp+prufer序列
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=562 题意: 求给每个节点的度数允许的最大值,让你求k个节点能组成的不同的生成树个数. 题解: 对于n ...
- 增强学习(Reinforcement Learning and Control)
增强学习(Reinforcement Learning and Control) [pdf版本]增强学习.pdf 在之前的讨论中,我们总是给定一个样本x,然后给或者不给label y.之后对样本进行 ...
- 【WCF--初入江湖】07 分布式事务
07 分布式事务 一.前言 [1]理解事务特性 [2]掌握TransactionFlow 特性 [3]掌握WCF中的事务属性 TransactionAutoCompleteOnSessionClose ...
- Unity3D脚本中文系列教程(三)
http://dong2008hong.blog.163.com/blog/static/4696882720140302323886/ Unity3D脚本中文系列教程(二) 示,属性不被序列化或显示 ...
- 如何使用 Apache ab 以及 OneAPM 进行压力测试?
下一个 release 准备小长假后就要 go-live ,所有的测试 case 都 cover 过了,但还未进行过压力测试,有点不放心,刚好过节期间家人都回家去了,假期终于可以抽点时间压测一把. A ...