在Web應用中的如何設置日志文件的路徑呢?最笨的方法是寫絕對路徑,但很不方便。
而Spring的做法是使用一個Servlet Listener,在WebContainer啟動時把ROOT的絕對路徑寫到系統變量里,這樣log4j的配置文件里就可以用$大括號myAppfuse.root大括號 來表示剛剛設進去的系統變量:
log4j.appender.logfile.File=$大括號myAppfuse.root大括號/logs/mylog.log 在Web.xml中配置語句如下:
<!--如果不設,默認為web.root,但最好設置,以免項目間沖突-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>myappfuse.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
如果設置為:
#這樣是當直接啟動tomcat時會自動在tomcat的自有目錄logs下生成mylog.log(推薦)
log4j.appender.logfile.File=../logs/mylog.log
#這樣是當直接啟動tomcat時會自動在tomcat的自有目錄bin下生成mylog.log(如果是在eclipse啟動tomcat則在eclipse目錄下生成mylog.log)
log4j.appender.logfile.File=mylog.log
#在tomcat里運行可以這樣寫,會自動在tomcat的自有目錄logs下生mylog.log(推薦)
log4j.appender.R.File=$大括號catalina.base大括號/logs/mylog.log
===================================
另外一種方式,自己設置目錄:
首先設置環境變量(跟CATALINA_BASE類似)CATALINA_LOG=任意目錄(如:D:\log);
windows下在catalina.bat里找到 -Dcatalina.base="%CATALINA_BASE%" ,在其前面加上
-Dcatalina.log="%CATALINA_LOG%"
linux下在catalina.sh里找到-Dcatalina.base="$CATALINA_BASE" \,在其上面加上-Dcatalina.log="$CATALINA_LOG" \
在log4j里就可以這樣寫了log4j.appender.R.File=$/logs/log_webdisk_log4j.log
在tomcat的logging.properties里也可以改1catalina.org.apache.juli.FileHandler.directory = $/logs
....
=================================
tomcat 的temp目錄設置:
一.是直接設置環境變量CATALINA_TMPDIR完成。
二.是到catalina.bat(catalina.sh)去修改。
windows:
if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
set CATALINA_TMPDIR=%CATALINA_BASE%\temp
:gotTmpdir
linux:
if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/temp
fi
而Spring的做法是使用一個Servlet Listener,在WebContainer啟動時把ROOT的絕對路徑寫到系統變量里,這樣log4j的配置文件里就可以用$大括號myAppfuse.root大括號 來表示剛剛設進去的系統變量:
log4j.appender.logfile.File=$大括號myAppfuse.root大括號/logs/mylog.log 在Web.xml中配置語句如下:
<!--如果不設,默認為web.root,但最好設置,以免項目間沖突-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>myappfuse.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
如果設置為:
#這樣是當直接啟動tomcat時會自動在tomcat的自有目錄logs下生成mylog.log(推薦)
log4j.appender.logfile.File=../logs/mylog.log
#這樣是當直接啟動tomcat時會自動在tomcat的自有目錄bin下生成mylog.log(如果是在eclipse啟動tomcat則在eclipse目錄下生成mylog.log)
log4j.appender.logfile.File=mylog.log
#在tomcat里運行可以這樣寫,會自動在tomcat的自有目錄logs下生mylog.log(推薦)
log4j.appender.R.File=$大括號catalina.base大括號/logs/mylog.log
===================================
另外一種方式,自己設置目錄:
首先設置環境變量(跟CATALINA_BASE類似)CATALINA_LOG=任意目錄(如:D:\log);
windows下在catalina.bat里找到 -Dcatalina.base="%CATALINA_BASE%" ,在其前面加上
-Dcatalina.log="%CATALINA_LOG%"
linux下在catalina.sh里找到-Dcatalina.base="$CATALINA_BASE" \,在其上面加上-Dcatalina.log="$CATALINA_LOG" \
在log4j里就可以這樣寫了log4j.appender.R.File=$/logs/log_webdisk_log4j.log
在tomcat的logging.properties里也可以改1catalina.org.apache.juli.FileHandler.directory = $/logs
....
=================================
tomcat 的temp目錄設置:
一.是直接設置環境變量CATALINA_TMPDIR完成。
二.是到catalina.bat(catalina.sh)去修改。
windows:
if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
set CATALINA_TMPDIR=%CATALINA_BASE%\temp
:gotTmpdir
linux:
if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/temp
fi
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
