2008-02-25

tomcat下struts2的log4j日志配置(刚刚测试过)

关键字: tomcat, log4j日志管理

懂行的人都知道,log4j日志是个很基础的东东,与struts这种高层框架无关,只与web开发了的tomcat有关。这里之所以写出struts,是因为笔者一开始用struts的时候,以为是这样,也是这样google的。好了,言归正传,开工了

给tomcat配置log4j有好几种方法,我知道的有:

一、tomcat级别的统一日志管理(没有实际验证过,只是查了资料):

在tomcat的common/lib下增加log4j的.jar包,以便程序使用的时候,能够加载到。

在自己的webapps的WEB-INF/classes下添加log4j.properties配置,所有的东西都是自动的

 

这种方式的缺点很明显,一个tomcat可能会多个子webapps,都统一到一个日志下,非常不便于管理。所以重点看下面

 

二、每个webapp分别配置log4j(切实可行的实践经验)

1、在自己youapp的WEB-INF/lib下增加log4j-xxx.jar文件

2、自己写一个servlet,初始化log4j的相关配置信息:

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;

public class Log4jInitServlet extends HttpServlet {
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {		
	}
	
	public void init() throws ServletException {
		System.setProperty("webappRoot", getServletContext().getRealPath("/"));		
		PropertyConfigurator.configure(getServletContext().getRealPath("/") + getInitParameter("configfile"));
	}
}
 3、修改web.xml文件,让tomcat启动你app的时候自动加载刚才这个servlet:
	
	<!-- initialize log4j -->
	<servlet>
		<servlet-name>log4j config file</servlet-name>
		<servlet-class>com.keepc.util.Log4jInitServlet</servlet-class>
		<init-param>
			<param-name>configfile</param-name>
			<param-value>/WEB-INF/classes/log4j.properties</param-value>
		</init-param>
		
		<load-on-startup>1</load-on-startup>
	</servlet>

 4、在youapp/WEB-INF/classes先新建log4j.properties文件,内容如下:

log4j.rootLogger=debug, A1

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.file=${webappRoot}/logs/youapp_log-
log4j.appender.A1.DatePattern=yyyy-MM-dd'.log'
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss, SSS}[%c]-[%p] %m%n

5、重新启动tomcat,即可在你的youapp应用目录下看到logs目录和对应的log文件

#:这里说道的webapp目录是指:c:\program files\tomcat\webapps\youapp目录

6、在你的app目录下创建一个jsp做下测试:

<%@ page contentType="text/html; charset=GBK" language="java" import="org.apache.log4j.Logger,java.util.*"%>
<html>
<head>
<link href="style/reg.css" rel="stylesheet" type="text/css">
<title>测试页面</title>
</head>
<body>

<%
Logger log = Logger.getLogger("test.jsp");
log.debug("测试日志,哈哈");
%>

</body>

</html>
在你的浏览器调用下这个jsp,就可以看到日志内容了。

 

本方法在windows和linux下都通用,完全一样。

只与log4j.properties的详细配置方法,网上随便google下都有一箩筐,照抄就是了。

 

评论
liukl 2008-02-25
一般公共库文件都按惯例放在lib下,放到classes下应该也可以,没试过
qichunren 2008-02-25
直接把配置文件丢到classes下,log4j就可以找到了,不用这么麻烦的
liukl 2008-02-25
只是拿jsp做个测试,其实jsp和java里是一回事。<%%>里的就是java代码
kyo100900 2008-02-25
JSP直接调用Log4j场合多吗?
发表评论

您还没有登录,请登录后发表评论

liukl
搜索本博客
最近加入圈子
存档
最新评论
  • 互联网开发思路
    国内大部项目现状如此,其它的软件开发也不会好到哪里去。
    -- by hyhongyong
  • 互联网开发思路
    看不懂 虽然看起来小学语文课没啥用 其实还是挺重要的 把错别字都改了去先
    -- by quiii
  • 互联网开发思路
    思科、微软、IBM、google、yahoo大多都是有了良好的基业才开始大量收购 ...
    -- by vreal
  • 互联网开发思路
    引用其实纵观国外成功的IT企业,其历程无一例外是一系列成功的收购史。如思科、微软 ...
    -- by dogstar
  • 互联网开发思路
    总结出什么了?不要搞原创的公司,(因为你走不了狗屎运),一定要找现成的软件,如果 ...
    -- by Lucas Lee