1 分経過した後、または 1MB のサイズを超えた後にログをロールしたいと考えています。ただし、以下の構成では、サイズを考慮して最初のログのみが作成されます。まあ言ってみれば:
myapp.2012-11-21_15-07.log (サイズ:1026KB~1MB)
myapp.log (サイズ:89KB)
時間が経過し (ただし、まだその分以内です)、ログがいっぱいになり (1MB を超えます)、別のファイルは作成されません。サイズに関係なく、時間を超えた場合にのみ別のファイルが作成されます。
これはバグですか、それとも意図した機能ですか? logback を使用してこれを構成するにはどうすればよいですか? カスタム実装が必要ですか?
1分経過または1MBのサイズを超えた後にログをロールしたい場合、現在のマニュアルを読んだ限り、次の構成を行います。
<configuration>
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/myapp.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
<maxHistory>90</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-5level %date{ISO8601} [%thread]: [%class: %method] %message%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %date{ISO8601} [%thread]: [%class: %method] %message%n</pattern>
</encoder>
</appender>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %date{ISO8601} [%thread]: [%class: %method] %message%n</pattern>
</encoder>
</appender>
<logger name="org.springframework.core">
<level value="all"/>
</logger>
<logger name="org.springframework.beans">
<level value="all"/>
</logger>
<logger name="org.springframework.context">
<level value="all"/>
</logger>
<logger name="org.springframework.web">
<level value="all"/>
</logger>
<root level="error,info,debug">
<appender-ref ref="file"/>
<!-- <appender-ref ref="console"/> -->
</root>
</configuration>
依存関係 (logback の力を得るためにそれを使用している各依存関係で commons-logging を除外しています - 以下には示されていません):
<!-- LOGGING -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.6</version>
</dependency>
<!--END LOGGING-->
いくつかの追加情報:
1.0.7 バージョンも試しました (中央リポジトリからは入手できませんが、最後のバージョンはローカルの Maven リポジトリに手動で含める必要がありました) が、同じことが起こりました。
私のプロジェクトは 0.9.11 バージョンの logback を使用していましたが、有効なドキュメントやマニュアルが見つからなかったため、ローリング ポリシーを設定できませんでした。おそらく、レガシー依存関係を扱う必要がある人のために、古いマニュアルを指摘する人もいるでしょう。
敬具、
デスポット