2016-10-17 7 views
6

logbackからtotalSizeCapエレメントを使用してログファイルの最大数を制限しようとしています。私は春のブートアプリケーションを使用しています以下のようなので、logback含ま:ログバックスプリングブートロギングでtotalSizeCapに該当するアクションはありません

logback.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration debug="true"> 
    <include resource="log4j/logback-${spring.profiles.active}.xml"/> 
</configuration> 

のlog4j/logback-dev.xmlファイル

included> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <Pattern> 
       %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
      </Pattern> 
     </encoder> 
    </appender> 

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>/tmp//log/log.out</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
      <fileNamePattern>/tmp/log/log_%d{yyyy-MM-dd}.%i.out</fileNamePattern> 
      <maxFileSize>10MB</maxFileSize> 
      <maxHistory>1</maxHistory> 
      <totalSizeCap>2MB</totalSizeCap> 
     </rollingPolicy> 
     <encoder> 
      <charset>UTF-8</charset> 
      <pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n 
      </pattern> 
     </encoder> 
    </appender> 

    <root level="INFO"> 
     <appender-ref ref="STDOUT" /> 
     <appender-ref ref="FILE" /> 
    </root> 

    <logger name="com.company" level="INFO" /> 
    <logger name="org.springframework" level="ERROR" /> 

</included> 

ERROR

ERROR in ch[email protected]:27 - no applicable action for [totalSizeCap], current ElementPath is [[configuration][appender][rollingPolicy][totalSizeCap]] 

どのようにログファイルを制限しますか?

答えて

0

私の推測では、logback.xmlはあなたが望むものを指定するのに適切な場所ではありません。代わりにlogback-spring.xmlファイルを使用する必要があります。これは、LogbackフレームワークがApplicationContextの前にロードされているため(コンテキストがいくつかの初期のものをログに記録できるように)、コンテキストがアプリケーションの実行中の残り時間についてlogback-spring.xmlをロードしてログバック設定を変更するためです。そのような私の推測では、${spring.profiles.active}はアクティブなプロファイルに置き換えられていないということです。 reference

から

私たちは、あなたの ログ(例えばlogback-spring.xmlではなく logback.xml)設定のため-springバリアントを使用することをお勧めします可能性。標準構成ロケーションを使用する場合、Spring はログ初期化を完全に制御できません。

この質問に答えるうちにさらに少し読むと、具体的にはLogback extensions周辺のセクションがあります。プロパティーを公開するには、構成内で<springProperty>要素を使用する必要があるようです。

<springProperty scope="context" name="activeProfile" source="spring.profiles.active" defaultValue="DEV"/> 
<include resource="log4j/logback-${activeProfile}.xml"/>