8

私はAndroid アプリケーションでlogback-androidを使用して、ログが有効になっているときはいつでもメッセージをファイルに記録しています (アプリでの設定)。正常に動作しているようですが、次のシナリオがある場合

  • サイズが 50MB に達したらログをローテーションする
  • ログのローテーションが行われるときのバックアップ ファイルを作成します。例えば。testFile.1.log.zip

この目的のために 、次のlogback.xmlファイルがあります。

<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>/sdcard/dappLog.log</file>
    <append>true</append>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>/sdcard/dappLog.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>2</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="com.dapp.utilities.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
    </triggeringPolicy>
</appender>

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

SizeBasedTriggerPolicyにバグ( src ) があるため、この回答に従って、次の実装があります 。

package com.dapp.utilities;  
import java.io.File;  
import ch.qos.logback.core.util.FileSize;  
public class SizeBasedTriggeringPolicy<E> extends ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy<E> {  
    @Override  
    public boolean isTriggeringEvent(final File activeFile, final E event) {  
        return (activeFile.length() >= FileSize.valueOf(getMaxFileSize()).getSize());  
    }  
}

`

ただし、これを実行すると、次のエラーが発生します。

I/System.out( 2346): 16:14:20,750 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@8:85 - no applicable action for [rollingPolicy], current pattern is [[configuration][appender][rollingPolicy]]  
I/System.out( 2346): 16:14:20,757 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@9:30 - no applicable action for [fileNamePattern], current pattern is [[configuration][appender][rollingPolicy][fileNamePattern]]  
I/System.out( 2346): 16:14:20,763 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@10:23 - no applicable action for [minIndex], current pattern is [[configuration][appender][rollingPolicy][minIndex]]  
I/System.out( 2346): 16:14:20,770 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:23 - no applicable action for [maxIndex], current pattern is [[configuration][appender][rollingPolicy][maxIndex]]  
I/System.out( 2346): 16:14:20,777 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:90 - no applicable action for [triggeringPolicy], current pattern is [[configuration][appender][triggeringPolicy]]  
I/System.out( 2346): 16:14:20,820 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@15:26 - no applicable action for [maxFileSize], current pattern is [[configuration][appender][triggeringPolicy][maxFileSize]]  

PS:私はログバックが初めてです。

4

2 に答える 2

12

自分で問題を理解しました。タグのclass属性が 間違っていたためです。 したがって、次のコードが機能します。 appender

<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/sdcard/dapp.log</file>
    <append>false</append>

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>/sdcard/dapp.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>2</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="com.bigbasket.dapp.utilities.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

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

于 2013-02-14T11:46:06.313 に答える
1

<AppenderRef ...>of の代わりに of のスペルが間違っている<appender-ref ...>と、このエラーも発生する可能性があります。

于 2015-05-05T19:59:38.443 に答える