<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22,comments - 35,trackbacks - 0

    Log4j日志輸出路徑只能設定成絕對路徑,這個在web項目中就變得很不方便了。
    比如我想要設定日志保存在webapp/log

    參考了網(wǎng)上資料:
    http://hi.baidu.com/suofang/blog/item/6cf2befbd1ff07234f4aea90.html
    下面是引入內(nèi)容:

    方法一主要是擴展了log4j的RollingFileAppender類,其他的FileAppender同樣道理。擴展的方法,就是用一個子類去覆蓋setFile方法,這個方法在log4j讀取配置文件生成appender的時候調(diào)用,傳入的就是配置文件中的路徑,這樣我就可以按照自己的想法在路徑前面加上根路徑了。這種方法可以在log4j.properties中用相對路徑自由配置log4j.appender.A1.File屬性來決定生成的日志相對web應用根目錄的位置。

    方法二是利用服務器vm中已經(jīng)存在的環(huán)境變量如${catalina.home}來設置相對于${catalina.home}的日志路徑,日志只能放到服務器子目錄里,而且如果是用的其它服務器,則要改對應的環(huán)境變量。此方法平臺移植不方便。

    方法三是擴展ActionServlet類,覆蓋其init()方法,新方法中載入log4j.properties位置的參數(shù),可以自由配置log4j的配置文件的名字和存放位置。也可自由配置log4j日志文件的相對于當前應用的路徑。

    對于第三個方法,作者提出了個問題:
    log4j配置文件的位置,不讓其在web-inf/classes目錄,因為在加載此Servlet之前,服務器如tomcat啟動時會自動搜索web-inf目錄和web-inf/classes目錄中log4j.properties文件,如有則自動加載。log4j屬性文件加載后,由于該屬性文件中log4j.appender.A1.File的值用的是相對路徑,自動加載配置便會出錯:
    log4j:ERROR setFile(null,true) call failed.
    java.io.FileNotFoundException: WEB-INF\logs\bysxxglxt.log
    (系統(tǒng)找不到指定的路徑。)

    盡管后面加載擴展的ActionServlet中正確設置了log4j屬性文件并正常加載了,但還是報的這個錯,怪不爽的。只有更改log4j屬性文件名字或者更改其存放位置,讓其不能自動加載了,不過還是有兩個警告:
    log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
    log4j:WARN Please initialize the log4j system properly.

    新的發(fā)現(xiàn):
    由于spring也會加載log4j.properties,如果加載不到就往控制臺打log信息,總覺得有些礙眼,于是想辦法去掉。Spring提供了一個Log4jConfigListener,本身就能通過web.xml中配置來指定位置加載log4j配置文件和log輸出路徑,注意該listener需要放在spring的Listener之前。
    事實上,Log4jConfigListener更適合log4j在web工程中使用,原因如下:
    1. 動態(tài)的改變記錄級別和策略,不需要重啟Web應用,如《Effective Enterprise Java》所說。
       2. 把log文件定在 /WEB-INF/logs/ 而不需要寫絕對路徑。
    因為 系統(tǒng)把web目錄的路徑壓入一個叫webapp.root的系統(tǒng)變量。這樣寫log文件路徑時不用寫絕對路徑了.
    log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
       3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。
       4.log4jRefreshInterval為60000表示 開一條watchdog線程每60秒掃描一下配置文件的變化;
       在web.xml 添加

    Xml代碼
    1. <context-param>  
    2.     <param-name>log4jConfigLocation</param-name>  
    3.     <param-value>WEB-INF/log4j.properties</param-value>  
    4. </context-param>  
    5.   
    6. <context-param>  
    7.     <param-name>log4jRefreshInterval</param-name>  
    8.     <param-value>60000</param-value>  
    9. </context-param>  
    10.   
    11. <listener>  
    12.     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
    13. </listener>  
    posted on 2009-06-29 16:11 kelven 閱讀(2296) 評論(0)  編輯  收藏 所屬分類: javaStructsHTMLXMLjsp/servlet
    主站蜘蛛池模板: 亚洲国产精品无码久久一区二区| 女人被男人躁的女爽免费视频| 亚洲国产成人五月综合网| 亚洲av乱码一区二区三区按摩| 日本阿v免费费视频完整版| 亚洲福利电影在线观看| 24小时在线免费视频| 亚洲神级电影国语版| 免费无码AV片在线观看软件| 亚洲中字慕日产2021| 四虎永久在线观看免费网站网址| 亚洲精品乱码久久久久久下载| 亚洲免费在线视频播放| 亚洲av无码不卡久久| 日本媚薬痉挛在线观看免费| 在线观看亚洲网站| 亚洲人成网站色在线入口| 成人一区二区免费视频| 亚洲国产精久久久久久久| 国产四虎免费精品视频| 国产精品亚洲自在线播放页码| 日本高清免费中文字幕不卡| 羞羞网站在线免费观看| 亚洲精品自在在线观看| h在线观看视频免费网站| 亚洲国产精品美女久久久久| 亚洲国产婷婷香蕉久久久久久| 国偷自产一区二区免费视频| 亚洲经典在线观看| 国产美女无遮挡免费视频网站 | 亚洲精品无码99在线观看| 中文字幕成人免费高清在线| 久久亚洲美女精品国产精品| 国产精品视频永久免费播放| 一个人看的免费高清视频日本| 亚洲免费视频在线观看| 免费无码一区二区三区蜜桃大 | 亚洲欧洲精品成人久久奇米网 | 亚洲无线电影官网| 毛片免费观看网站| 91成人免费观看在线观看|