配置log4j的日志文件为Tomcat的logs目录的方法

时间:2021-09-24 13:38:24

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="CONSOLE"class="org.apache.log4j.ConsoleAppender">

        <layout class="org.apache.log4j.PatternLayout">

            <param name="ConversionPattern"

                value="%p - %C{1}.%M(%L) | %m%n"/>

        </layout>

    </appender>

 

    <appender name="apcmsSysLogFile"class="org.apache.log4j.DailyRollingFileAppender">

   <param name="File"value="${catalina.home}/logs/apcms/apcms_sys.log"/>

   <param name="DatePattern"value="'_'yyyyMMdd'.log'"/>  

   <layout class="org.apache.log4j.PatternLayout">

           <param name="ConversionPattern"

               value="%d{yyyyMMdd HH:mm:ss} %p - %C{1}.%M(%L) | %m%n"/>

   </layout>

</appender>

   <appender name="apcmsDataSyncLogFile"class="org.apache.log4j.DailyRollingFileAppender">

   <param name="File"value="${catalina.home}/logs/apcms/apcms_dataSync.log"/>

   <param name="DatePattern"value="'_'yyyyMMdd'.log'"/>  

   <layout class="org.apache.log4j.PatternLayout">

           <param name="ConversionPattern"

               value="%d{yyyyMMdd HH:mm:ss} %p - %C{1}.%M(%L) | %m%n"/>

   </layout>

</appender>

<appender name="FILE"class="org.apache.log4j.DailyRollingFileAppender">  

        <param name="File"value="${catalina.home}/logs/apcms/SystemAll.log"/>    

        <param name="DatePattern"value="'_'yyyy-MM-dd'.log'"/>    

        <layout class="org.apache.log4j.PatternLayout">  

         <param name="ConversionPattern"   

            value="[%d{yyyyMMdd HH:mm:ss SSS} %-5p] [%t] %c{3} - %m%n"/>  

        </layout>    

    </appender>  

    <logger name="org.apache">

        <level value="WARN"/>

    </logger>

 

    <logger name="org.directwebremoting">

        <level value="WARN"/>

    </logger>

 

 

    <logger name="org.springframework">

        <level value="WARN"/>

    </logger>

 

    <logger name="org.codehaus.xfire">

        <level value="WARN"/>

    </logger>

</log4j>

 

${catalina.home}系统环境配置了CATALINA_HOME环境变量

方法一、 解决的办法自然是用相对路径代替绝对路径,其实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系统的环境变量中设置。之所以这样,你可以看看tomcatbincatalina.bat(startup,shutdown都是调用这个)里面自带有-Dcatalina.home="%CATALINA_HOME%"。继承这个思想,所以你也可以自己设定一个参数-Dmylog.home="D:/abc/log"到对应的服务器java启动的vm参数中

在Tomcat 5.5中的Log4j日志文件的默认相对路径是:bin目录下,  如果要配置到你的应用程序的目录下只需这样:      >如果用myEclipse开发环境下用:"../webapps/你的工程目录/日志文件名";      >如果直接用tomcat5.5启动:"./webapps/你的工程目录/日志文件名"; 

其实应该把它放到tomcat的logs目录下就可以了  log4j.appender.R.File=../logs/log4j.log