web-dev-qa-db-ja.com

RollingFileAppenderのFileNamePattern-ログバック構成

ログバック構成ファイルに次のRollingFileappenderがあります。

<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に日付を追加する方法はありますか。ありがとう。

18
Aks

TimeBasedRollingPolicy のドキュメントには次のように記載されています。

fileRollingFileAppenderの親)のTimeBasedRollingPolicyプロパティは、設定または省略できることに注意してください。含まれているFileAppenderのファイルプロパティを設定することにより、アクティブなログファイルの場所とアーカイブされたログファイルの場所を分離できます。現在のログは、常にfileプロパティで指定されたファイルを対象としています。したがって、現在アクティブなログファイルの名前は時間の経過とともに変更されません。ただし、fileプロパティを省略することを選択した場合、アクティブファイルはfileNamePatternの値に基づいて期間ごとに新たに計算されます。

あなたの場合は、fileプロパティを省略してください。

25
Ceki

たとえば、次の構成を使用できます。それはテストされ、動作します:)

<!-- 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>
2
Przemek Nowak