1. 程式人生 > >配置log4j的日誌檔案為Tomcat的logs目錄的方法

配置log4j的日誌檔案為Tomcat的logs目錄的方法

<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.lo

g"/>

   <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