2012-06-08 88 views
16

我的logback配置文件中有以下RollingFileappender。RollingFileAppender中的FileNamePattern - logback配置

<appender name="RollingFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <File>C:\Files\MyLogFile.log</File>  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
    <FileNamePattern>C:\Files\MyLogFile.%d{yyyy-MM-dd}.log</FileNamePattern>  
    <MaxHistory>30</MaxHistory>  
    </rollingPolicy>  
    <encoder> 
     <pattern>%date %level [%thread] %logger{60} [%file:%line] %msg%n</pattern> 
    </encoder> 
    </appender> 

它確實寫一個文件到上面的目錄MyLogFile.log但作爲FileNamePattern指定不追加的日期。任何想法如何設法在我的fileName中附加日期。謝謝。

+0

這是一個很好的問題,也讓我困惑。 LogBack保持記錄到MyLogFile.log,永遠不會在MyLogFile中結束。%{yyyy-MM-dd} .log我想知道這個文件屬性的用途。 –

回答

25

TimeBasedRollingPolicy狀態的文檔:

注意,在RollingFileAppenderfile屬性(的 TimeBasedRollingPolicy母體)可被設置或省略。通過設置包含FileAppender的文件屬性 ,可以將活動日誌文件的位置和歸檔日誌文件的位置分開。當前日誌將始終針對屬性指定的文件 。因此,當前活動的 日誌文件的名稱將不會隨時間而改變。但是,如果您選擇省略 file屬性,則將根據fileNamePattern的值重新計算每個 期間的活動文件。

對於您的情況,只需省略file屬性即可。

+0

創造了奇蹟..謝謝Ceki。 – Aks

+0

網頁上的示例 http://logback.qos.ch/manual/appenders.html 已損壞,它同時使用file和fileNamePattern – Marx

2

例如,您可以使用以下配置。它被測試和工作:)

<!-- FILE APPENDER WITH PRUDENT MODE --> 
<!-- IN PRUDENT MODE CANNOT BE SPECIFIED FILE, THIS PARAM IS OBTAINED FROM FILE NAME PATTERN --> 
<!-- IN PRUDENT MODE ONLY TIME BASED ROLLING POLICY IS SUPPORTED - BECAUSE WE HAVE A LOG OF MULTIPLE JVM INSTANCES--> 
<!-- SEE MORE AT http://logback.qos.ch/manual/appenders.html#prudentWithRolling --> 
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <prudent>true</prudent> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>${logfile.path}-%d{yyyy-MM-dd}.log</fileNamePattern> 
    </rollingPolicy> 

    <encoder> 
     <pattern>${HOSTNAME} %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
</appender>