log4j 產生的日志位置設置 和 catalina.home、catalina.base .


方法一、 解決的辦法自然是用相對路徑代替絕對路徑,其實log4j的FileAppender本身就有這樣的機制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 
其中“${WORKDIR}/”是個變量,會被System Property中的“WORKDIR”的值代替。這樣,我們就可以在log4j加載配置文件之前,先用System.setProperty ("WORKDIR", WORKDIR);設置好根路徑,此操作可通過一初始的servlet進行。 

方法二、可以使用服務器環境變量 
log4j的配置文件支持服務器的vm的環境變量,格式類似${catalina.home} 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log 
log4j.appender.R.MaxFileSize=10KB 
其中的${catalina.home}並非windows系統的環境變量,這個環境變量就不需要在Windows系統的環境變量中設置。之所以這樣,你可以看看tomcat\bin\catalina.bat(startup,shutdown都是調用這個)里面自帶有-Dcatalina.home= "%CATALINA_HOME%" 。繼承這個思想,所以你也可以自己設定一個參數-Dmylog.home="D:/abc/log"到對應的服務器java啟動的vm參數中 

方法三、通過servlet初始化init()方法中加載file屬性實現相對路徑 
具體實現:做一個servlet,在系統加載的時候,就把properties的文件讀到一個properties文件中.那個file的屬性值(我使用的是相對目錄)改掉(前面加上系統的根目錄),讓后把這個properties對象設置到propertyConfig中去,這樣就初始化了log的設置.在后面的使用中就用不着再配置了 
一般在我們開發項目過程中,log4j日志輸出路徑固定到某個文件夾,這樣如果我換一個環境,日志路徑又需要重新修改,比較不方便,目前我采用了動態改變日志路徑方法來實現相對路徑保存日志文件

 

 

 

 

catalina.homecatalina.base這兩個屬性僅在你需要安裝多個Tomcat實 例而不想安裝多個軟件備份的時候使用,這樣能節省磁盤空間。
Tomcat6.0為例,其Tomcat目 錄結構如下:

bin (運行腳本)
conf (配置文件)
lib (核心庫文件)
logs (日志目錄)
temp (臨時目錄)
webapps (自動裝載的應用程序的目錄)
work (JVM臨時文件目錄[java.io.tmpdir])

讓 我們看看這些目錄那些可以被多個Tomcat實例公用,其實只有 bin 和 lib 目錄,其它目錄conf、logs、temp、webapps和work每個Tomcat實例必須擁有其自己獨立的備份。
明 白了上述關系就容易理解catalina.home和catalina.base的 用途了。
catalina.home指向公用信息的位置,就是bin和lib的父目 錄。
catalina.base指 向每個Tomcat目 錄私有信息的位置,就是conf、logs、temp、webapps和work的父目錄。
僅運行一個Tomcat實 例時,這兩個屬性指向的位置是相同的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM