Использование подстановочного знака или регулярного выражения в фильтре OnMarkerEvaluator

Я пытаюсь написать приложение, которое принимает все маркеры из logstash-logback-encoder.

Я пробовал следующее, используя logback 1.0.7 и logstash-logback-encoder 4.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>

....

Однако это не работает. Кажется, ничего не входит в этот аппендикс.

Следующий бит работы с фильтром довольно громоздкий

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

person DarVar    schedule 27.04.2016    source источник


Ответы (1)


Со ссылкой на код для OnMarkerEvaluation невозможно добиться совпадения подстановочных знаков или регулярных выражений с его текущей реализацией. Но альтернативным решением является реализация собственной EventEvaluatorBase, как показано ниже:

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_");
    }

}

Это всего лишь пример для вашего конкретного случая, его можно настроить и обобщить дальше.

person linkcrux    schedule 15.07.2017