2016-05-04 28 views
7

Ho scritto un Appender per il logback e salvare i log in ElasticSearch, quindi aggiungere questo appender a logback.xml. L'ho applicato in un'unica applicazione e ho ricevuto i registri da ES.logback: nessuna azione applicabile per [encoder], ElementPath corrente è [[configurazione] [appender] [codificatore]]

Ma quando applico in un'altra applicazione, logback mostra il seguente errore:

16:18:26,040 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender] 
16:18:26,062 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [dashcamAppender] 
16:18:26,078 |-ERROR in [email protected]:12 - no applicable action for [encoder], current ElementPath is [[configuration][appender][encoder]] 
16:18:26,080 |-ERROR in [email protected]:13 - no applicable action for [Pattern], current ElementPath is [[configuration][appender][encoder][Pattern]] 

mio logback.xml è:

... 
<appender name="dashcamAppender" 
     class="com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender"> 
    <encoder> 
     <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern> 
    </encoder> 
    <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
     <level>TRACE</level> 
    </filter> 
</appender> 
... 

perso un po 'di azione (o come aggiungere loro) per logback?

risposta

2

Probabilmente è dovuto al tuo appender personalizzato.

extends AppenderBase<ILoggingEvent> 

Questo AppenderBase non implementa l'encoder/modello al suo interno - ma se si guarda alla console appender si estende uno che non li hanno come oggetti.

Pertanto non può mappare l'encoder/i modelli sul proprio oggetto.

Basta rimuoverli dall'appender tutti insieme.

... 
<appender name="dashcamAppender" class="com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender"> 
    <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
     <level>TRACE</level> 
    </filter> 
</appender> 
... 

Se si desidera utilizzarli, è necessario modificare la classe di Appender per implementarli.