2012-06-08 94 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>