Tomcat下log4j设置文件路径和temp目录

在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
原文地址:https://www.cnblogs.com/dkblog/p/1980873.html