2013-02-14 11 views
7

Używam logback-android w mojej aplikacji Android do logowania wiadomości do pliku, gdy tylko logowanie jest włączone (konfiguracja w aplikacji). Wydaje się działać prawidłowo, ale kiedy mam następujący scenariuszLogback-Android: błąd "brak odpowiednich działań" podczas używania FixedWindowRollingPolicy z SizeBasedTriggeringPolicy

  • Obrót logowaniu gdy jego wielkość sięga 50MB
  • Tworzenie kopii zapasowych plików na kiedy obroty dziennika odbywa. na przykład. testFile.1.log.zip

Mam następujący logback.xml plik do tego celu:

<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> 

Zgodnie this odpowiedź ponieważ istnieje bug (src) w SizeBasedTriggerPolicy, więc mam następującą implementację:
`

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()); 
    } 
} 

`

Jednak, gdy biegnę to, ja otrzymuję następujący błąd:

I/System.out(2346): 16:14:20,750 |-ERROR in [email protected]:85 - no applicable action for [rollingPolicy], current pattern is [[configuration][appender][rollingPolicy]] 
I/System.out(2346): 16:14:20,757 |-ERROR in [email protected]:30 - no applicable action for [fileNamePattern], current pattern is [[configuration][appender][rollingPolicy][fileNamePattern]] 
I/System.out(2346): 16:14:20,763 |-ERROR in [email protected]:23 - no applicable action for [minIndex], current pattern is [[configuration][appender][rollingPolicy][minIndex]] 
I/System.out(2346): 16:14:20,770 |-ERROR in [email protected]:23 - no applicable action for [maxIndex], current pattern is [[configuration][appender][rollingPolicy][maxIndex]] 
I/System.out(2346): 16:14:20,777 |-ERROR in [email protected]:90 - no applicable action for [triggeringPolicy], current pattern is [[configuration][appender][triggeringPolicy]] 
I/System.out(2346): 16:14:20,820 |-ERROR in [email protected]:26 - no applicable action for [maxFileSize], current pattern is [[configuration][appender][triggeringPolicy][maxFileSize]] 

PS: Jestem nowy na logback.

Odpowiedz

11

Samemu się zorientowałem. Wynika to z niewłaściwego atrybutu class w tagu appender.
więc następujący kod działa:

<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> 

1

Mając błędnej pisowni <AppenderRef ...> zamiast <appender-ref ...> może powodować ten błąd też.