PlayFramework2.2.xでログローテートする方法

以下のように書くことでログをローテートできます。

<configuration>
    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${application.home}/logs/application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${application.home}/logs/application.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 10 days' worth of history -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
        </encoder>
    </appender>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
        </encoder>
    </appender>
    <logger name="play" level="INFO" />
    <logger name="application" level="INFO" />
    <root level="ERROR">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

https://github.com/YoshiteruIwasaki/PlayFrameworkRecruitConsole/blob/master/conf/logger.xml

ちなみに1点注意が必要なのですが、PlayをSTOPするときにログは別名で保存されなおされません。

application.logのままです。その状態でPlayをStartすると、ログはフラッシュされて消えます。

何らかの障害が発生

とりあえずPlayを再起動してみる

やった!直った!でも直近のログが消えてる

 ということが起きるので、Startする前に直近のログは退避させるようにしましょう。