2013-02-14 7 views
7

Sto utilizzando logback-android nella mia applicazione Android per registrare i messaggi in un file, ogni volta che la registrazione è abilitata (configurazione nell'app). E sembra funzionare bene, ma quando ho il seguente scenarioLogback-Android: errore "nessuna azione applicabile" quando si utilizza FixedWindowRollingPolicy con SizeBasedTriggeringPolicy

  • Ruota di registro quando raggiunge la sua dimensione 50MB
  • creare file di backup per quando la rotazione dei log avviene. per esempio. testFile.1.log.zip

Ho il seguente file dilogback.xml per questo scopo:

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

Come per this risposta in quanto v'è una bug (src) in SizeBasedTriggerPolicy, quindi ho la seguente implementazione:
`

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

`

Tuttavia, quando sono in esecuzione questo, sto ottenendo il seguente errore:

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: Sono nuovo di logback.

risposta

11

Ho risolto il problema personalmente. Era a causa dell'attributo errato class nel tag appender.
Così il seguente codice funziona:

<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

Avere ortografia errata di <AppenderRef ...> invece di <appender-ref ...> può causare questo errore troppo.

Problemi correlati