quarkus 多个日志过滤器

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

quarkus 应用程序属性

quarkus.log.console.filter
似乎只支持一种过滤器。例如,

quarkus.log.console.filter=myfilter

只要有像

这样的课程就可以很好地工作
@io.quarkus.logging.LoggingFilter(name = "myfilter")
public class LoggingFilter implements Filter {
    //...
}

存在。

但是如果指定了多个过滤器

quarkus.log.console.filter=myfilter,yourfilter

当应用程序启动时,控制台中会显示以下消息:

LogManager error of type GENERIC_FAILURE: Unable to find named filter 'myfilter,yourfilter'

这里似乎只允许使用一个过滤器:是否有任何已知的解决方法?

quarkus
1个回答
0
投票

在撰写本文时,不可能在 quarkus 中指定多个日志过滤器。作为解决方法,由于所有日志过滤器都实现 Filter 接口,因此可以使用装饰器模式将它们组合起来:

@io.quarkus.logging.LoggingFilter(name = "multiple-filter")
public class MultipleFilter implements Filter {

    private final Filter filter1;

    private final Filter filter2;

    public MultipleFilter(Filter1 filter1, Filter2 filter2) {
        this.filter1 = filter1;
        this.filter2 = filter2;
    }

    @Override
    public boolean isLoggable(LogRecord record) {
        return filter1.isLoggable(record) && filter2.isLoggable(record);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.