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

          常用鏈接

          留言簿(1)

          隨筆分類(146)

          隨筆檔案(147)

          文章分類(28)

          文章檔案(28)

          喜歡的Blog

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          缺省情形下我們只能在log4j.properties中搭配絕對(duì)路徑。這么一來(lái),我們?cè)谙到y(tǒng)部署、環(huán)境移植等環(huán)節(jié)就會(huì)帶來(lái)很大的不便,必須將路徑改來(lái)改去。因而,我們要利用下面的措施實(shí)現(xiàn)log4j.properties中的相對(duì)路徑。
          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}來(lái)取得應(yīng)用路徑,webRoot是個(gè)變量。我們是從哪里取得的值呢?是從我們自己的類中,因此必須寫這個(gè)類。
          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("/"); //獲取當(dāng)前路徑
                  String file = config.getInitParameter("log4j");//從web.xml中獲取參數(shù)值,找到log4j這個(gè)文件
                  System.setProperty("webRoot", prefix); //log4j.properties文件中的變量是在這里設(shè)置的
                  if (file != null) {
                      PropertyConfigurator.configure(prefix 
          + file);
                  }
              }
          }
          web.xml加載這個(gè)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>
          最后說(shuō)一點(diǎn),如果你用struts,而在web.xml中配置了ServletAction,它的啟動(dòng)級(jí)別為<load-onstartup>0</load-on-startup>,那么我們的這個(gè)類的的啟動(dòng)級(jí)別不能低于它,否則可能會(huì)出現(xiàn)找不到路徑的問(wèn)題。
          posted on 2012-02-15 16:03 飛翔天使 閱讀(1194) 評(píng)論(1)  編輯  收藏 所屬分類: log4j

          FeedBack:
          # re: Log4j中利用相對(duì)路徑 2012-02-16 12:31 greatghoul
          這樣還真是方便呀。  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 哈巴河县| 澄城县| 嵊州市| 会昌县| 阿合奇县| 临桂县| 广州市| 基隆市| 华阴市| 镇坪县| 沙坪坝区| 南丹县| 双峰县| 阳新县| 景谷| 临泽县| 惠州市| 寿宁县| 林芝县| 吴江市| 隆昌县| 霍林郭勒市| 武安市| 石渠县| 马公市| 阿拉善左旗| 贵定县| 肃宁县| 闵行区| 荆门市| 正阳县| 蒲江县| 电白县| 山丹县| 九龙县| 韶山市| 汨罗市| 宁晋县| 灵武市| 泸溪县| 静乐县|