我使用提升日志并希望定义组合过滤器。我使用boost::log::init_from_stream
从流中读取配置。在单一条件下过滤工作正常。我能做到
Filter = "%Channel% = A"
仅从通道A获取日志条目。我可以
Filter = "%Severity% >= warn"
仅获取严重性为警告或更高级别的日志条目。
问题出现了:我想做像
这样的事情Filter = " (%Channel% = A AND %Severity% >= warn)
OR (%Channel% = B AND %Severity% >= info)"
我无法找到有关此类过滤器组合的任何文档。有没有办法在使用boost::log::init_from_stream
时执行此操作?
答案 0 :(得分:2)
我找到了这个记录语法的文档页面:
filter:
condition { op condition }
op:
&
and
|
or
condition:
!condition
not condition
(filter)
%attribute_name%
%attribute_name% relation operand
relation:
>
<
=
!=
>=
<=
begins_with
ends_with
contains
matches
使用这个,问题中给出的例子可以表示如下:
Filter = "(%Channel% = A & %Severity% >= warn) | (%Channel% = B & %Severity% >= info)"