随笔 - 147  文章 - 71  trackbacks - 0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

常用链接

留言簿(1)

随笔分类(146)

随笔档案(147)

文章分类(28)

文章档案(28)

喜欢的Blog

搜索

  •  

最新评论

阅读排行榜

评论排行榜

缺省情形下我们只能在log4j.properties中搭配绝对路径。这么一来,我们在系统部署、环境移植等环节就会带来很大的不便,必须将路径改来改去。因而,我们要利用下面的措施实现log4j.properties中的相对路径。
log4j.properties文件配置如下:
log4j.appender.Rlogfile=org.apache.log4j.RollingFileAppender
log4j.appender.Rlogfile.layout=org.apache.log4j.PatternLayout
log4j.appender.Rlogfile.layout.ConversionPattern=%d %p [%c] - <%m>%n
log4j.appender.Rlogfile.File=${webRoot}/logs/log.log
log4j.appender.Rlogfile.MaxFileSize=2048KB
log4j.appender.Rlogfile.MaxBackupIndex=10
这里,我们使用${webRoot}来取得应用路径,webRoot是个变量。我们是从哪里取得的值呢?是从我们自己的类中,因此必须写这个类。
package com.clientmanager.util;

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

public class Log4jInit extends HttpServlet {

    
public void init(ServletConfig config) throws ServletException {
        String prefix 
= config.getServletContext().getRealPath("/"); //获取当前路径
        String file = config.getInitParameter("log4j");//从web.xml中获取参数值,找到log4j这个文件
        System.setProperty("webRoot", prefix); //log4j.properties文件中的变量是在这里设置的
        if (file != null) {
            PropertyConfigurator.configure(prefix 
+ file);
        }
    }
}
web.xml加载这个servlet
<servlet>
 
<servlet-name>log4j-init</servlet-name>
   
<servlet-class>com.clientmanager.util.Log4jInit</servlet-class>
     
<init-param>
       
<param-name>log4j</param-name>
     
<param-value>WEB-INF/classes/log4j.properties</param-value>
    
</init-param>
    
<load-on-startup>0</load-on-startup>
</servlet>
最后说一点,如果你用struts,而在web.xml中配置了ServletAction,它的启动级别为<load-onstartup>0</load-on-startup>,那么我们的这个类的的启动级别不能低于它,否则可能会出现找不到路径的问题。
posted on 2012-02-15 16:03 飞翔天使 阅读(1184) 评论(1)  编辑  收藏 所属分类: log4j

FeedBack:
# re: Log4j中利用相对路径 2012-02-16 12:31 greatghoul
这样还真是方便呀。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: