通过Logback Spring Rollbar Appender中的消息过滤事件

问题描述 投票:0回答:1

我已经配置了Rollbar Appender in logback-spring.xml

logback-spring.xml

并激活它以获取所需的配置文件:

<appender name="Rollbar" class="com.rollbar.logback.RollbarAppender">
    <accessToken>${ROLLBAR_TOKEN}</accessToken>
    <environment>${SPRING_PROFILES_ACTIVE}</environment>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
</appender>

一切正常,除了一个问题,我在Rollbar中会收到错误。我不希望在Rollbar中看到一些错误,但仍然可以在控制台中看到它们,例如:]

<!-- debug level for dev -->
<springProfile name="dev">
    <root level="debug">
        <appender-ref ref="Console"/>
        <appender-ref ref="Rollbar"/>
    </root>
</springProfile>

我如何以最方便的方式过滤此类消息?

spring-logback rollbar
1个回答
0
投票

解决方案是创建您自己的io.netty.channel.unix.Errors$NativeIoException: readAddress(..) failed: Connection reset by peer 实现:

ch.qos.logback.core.filter.Filter

并以下列方式使用:

public class RegexRollbarFilter extends Filter<ILoggingEvent> {

    private String regex;
    private boolean includeThrowableMessage = true;

    @Override
    public FilterReply decide(ILoggingEvent event) {
        if (!isStarted()) {
            return FilterReply.NEUTRAL;
        }

        IThrowableProxy throwableProxy = event.getThrowableProxy();
        if (event.getMessage()
                 .matches(regex) || includeThrowableMessage && throwableProxy != null && throwableProxy.getMessage()
                                                                                                       .matches(regex)) {
            return FilterReply.DENY;
        } else {
            return FilterReply.NEUTRAL;
        }
    }

    public void setRegex(String regex) {
        this.regex = regex;
    }

    public void setIncludeThrowableMessage(boolean includeThrowableMessage) {
        this.includeThrowableMessage = includeThrowableMessage;
    }

    public void start() {
        if (this.regex != null) {
            super.start();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.