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 中指定多个日志过滤器。作为解决方法,由于所有日志过滤器都实现 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);
}
}