2014-10-09 58 views
4

我試圖在tomcat 7.0.23中配置帶有10個日誌文件的log4j2(2.0.2)的RollingFile appender。Log4j2:PropertyPattern在RollingFile appender中的屬性替換工作不正確

我在filePattern中使用$ {sys:catalina.base},它不起作用,日誌文件放在tomcat/bin/$ {sys:catalina.base} /目錄中。

有趣的部分是,在tomcat/logs下創建了第一個日誌文件(沒有數字),這意味着它成功地將文件名屬性映射到真實路徑。

當我用filePattern =「C:/apache-tomcat-7.0.23/logs/app.%i.log」替換$ {sys:catalina.base}時,它可以工作。

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
     <Console name="CONSOLE" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/> 
     </Console> 
     <RollingFile name="FILE" fileName="${sys:catalina.base}/logs/app.log" 
        filePattern="${sys:catalina.base}/logs/app.%i.log"> 
      <PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/> 
      <Policies> 
       <SizeBasedTriggeringPolicy size="10 MB" /> 
      </Policies> 
      <DefaultRolloverStrategy max="10"/> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <Root level="info"> 
      <appender-ref ref="CONSOLE" /> 
      <appender-ref ref="FILE" /> 
     </Root> 
    </Loggers> 
</Configuration> 

這意味着filePattern沒有正確解釋。

如何克服這個問題而不必靜態指定日誌目錄?

感謝您的幫助

+0

我看到完全相同的問題。 – andersonbd1 2014-10-13 20:48:05

+0

我挖掘了源代碼,並注意到filePattern與fileName的處理方式相同,然後我意識到我在Windows上並且正在使用「\」s ... log4j不喜歡(它不應該) T)。無論如何,在我的情況下,它是*不是*與log4j的問題 - 這是*我*的問題。 – andersonbd1 2014-10-16 19:53:44

回答

3

你描述的外觀很像LOG4J2-829報告的問題。這是2.0-RC2版本中引入的一個錯誤。它最近在大師中修復,修復將包含在即將發佈的2.1版本中。 (我希望將2.1下週公佈的一段時間 - 但沒有承諾......)

如果你趕時間,你可以從Log4j2 GIT repositorybuild 2.1-SNAPSHOT本地檢查出的代碼。

+2

2.1的發佈過程已經開始,團隊現在正在驗證發佈。如果沒有找到showstoppers,它應該在三天內提供。 – 2014-10-20 08:11:38

+0

看到我上面的評論 - 這是我的錯 - 不是log4j的。無論如何,我會給你賞金:-) – andersonbd1 2014-10-20 17:35:12

+2

感謝您的賞金!我實際上認爲它是_is_(幾天後,_was_)log4j的問題:如果這個錯誤沒有被修復,那麼常見的用例如包含'$ {sys:user.home}'的路徑將不起作用。有幾個人遇到了這個問題,我很高興這不會很快成爲問題。 – 2014-10-20 23:34:17