I need something like this:
\"param name=\"File\" value=\"${CATALINA_HOME}/logs/log4j.log\"
I saw a lot of similar questions, but there is no working solutions
For Tomcat 6.0 or newer use catalina.base
(rather than catalina.home
):
param name="File" value="${catalina.base}/logs/log4j.log"
Depending on the host system, the two may be different, for example:
catalina.home: /usr/share/tomcat7
catalina.base: /var/lib/tomcat7
Under catalina.home
there's the bin
folder.
Under catalina.base
there are conf
, logs
, webapps
and other folders/links.
Tomcat uses catalina.base
itself to configure the logging directory - see conf/logging.properties
where it says:
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
param name="File" value="${catalina.home}/logs/log4j.log"
The catalina.home
property is already made available by Tomcat.
Find a (very) brief example on the Tomcat 5.5 logging page and additional detail in the following SO question:
Log4j, configuring a Web App to use a relative path
You can do the following:
CATALINA_HOME
as an environment variable using -D
option. You just have to run set JAVA_OPTS=%JAVA_OPTS% -DCATALINA_HOME=%CATALINA_HOME%
if you are on windows or
export JAVA_OPTS=${JAVA_OPTS} -DCATALINA_HOME=$CATALINA_HOME
for unix.
Now just use ${CATALINA_HOME} into your log4j configuration file and this should work.