在 OnMarkerEvaluator 过滤器中使用通配符或正则表达式



我正在尝试编写一个接受来自logstash-logback-encoder的所有标记的追加器

我已经使用登录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>

参考 OnMarkerEvaluation 的代码,它不可能实现通配符或正则表达式与其当前实现的匹配。但另一种解决方案是实现您自己的事件评估器库,如下所示:

package com.test;
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_");
    }
}

这只是您具体情况的一个例子,可以进一步定制和推广。

相关内容

  • 没有找到相关文章

最新更新