2016-04-27 19 views
1

Ich versuche, eine appender zu schreiben, die alle Markierungen von logstash-logback-encodereine Wildcard oder Regex in OnMarkerEvaluator Filter Mit

ich folgenden mit logback 1.0.7 und logstash-logback-encoder4.6

<appender name="LOGSTASH" class="ch.qos.logback.classic.sift.SiftingAppender"> 
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> 
     <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> 
      <!-- Accept only Markers from logstash-logback-encoder --> 
      <marker>LS_*</marker>     
     </evaluator> 
     <onMatch>ACCEPT</onMatch> 
     <onMismatch>DENY</onMismatch> 
    </filter> 

habe versucht, akzeptiert .. ..

Allerdings funktioniert es nicht. Nichts scheint in diesen Appender einzudringen.

Die folgende Bitfilter Arbeit ist recht umständlich

<evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> 
     <!-- Accepts only Markers from logstash-logback-encoder --> 
     <marker>LS_MAP_FIELDS</marker> 
     <marker>LS_OBJECT_FIELDS</marker> 
     <marker>LS_APPEND_</marker> 
     <marker>LS_APPEND_OBJECT</marker> 
     <marker>LS_APPEND_RAW</marker> 
    </evaluator> 

Antwort

0

Mit für OnMarkerEvaluation zu Codereferenz sein nicht möglich Wildcard oder Regex mit seiner aktuellen Implementierung zu erzielen. Aber eine alternative Lösung ist Ihre eigene EventEvaluatorBase wie unten umzusetzen: für Ihren speziellen Fall

package com.apple.paymentgateway.hostsimulator; 

import org.slf4j.Marker; 

import ch.qos.logback.classic.spi.ILoggingEvent; 
import ch.qos.logback.core.boolex.EvaluationException; 
import ch.qos.logback.core.boolex.EventEvaluatorBase; 

public class CustomEvaluator extends EventEvaluatorBase<ILoggingEvent> { 

    @Override 
    public boolean evaluate(ILoggingEvent event) throws NullPointerException, EvaluationException { 
     Marker eventsMarker = event.getMarker(); 
     return eventsMarker.getName().startsWith("LS_"); 
    } 

} 

Dies ist nur ein Beispiel, kann weiter angepasst und verallgemeinert werden.