我正在尝试编写一个接受来自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>发布于 2017-07-16 04:55:17
参考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_");
}
}这只是一个针对您的特定情况的示例,可以进一步定制和推广。
https://stackoverflow.com/questions/36888163
复制相似问题