C++ 在Boost.Log中按范围过滤
我在用图书馆。我创建了一个名为_scope的C++ 在Boost.Log中按范围过滤,c++,boost,boost-log,C++,Boost,Boost Log,我在用图书馆。我创建了一个名为_scope的属性,用于跟踪我在代码中的位置。(我用BOOST\u LOG\u NAMED\u SCOPE(“…”)手动指定)是否可以创建一个过滤器(使用set\u filter)来只选择特定范围内的消息?请参阅Andrey最新和最棒的日志: 作用域堆栈实现为特定于线程的全局存储 内部。有一个命名的_scope属性允许挂接 将该堆栈插入日志记录管道。此属性生成值 的实例,该嵌套类型名为\u scope::scope\u stack 范围堆栈。可以通过以下方式注册该属
属性,用于跟踪我在代码中的位置。(我用BOOST\u LOG\u NAMED\u SCOPE(“…”
)手动指定)是否可以创建一个过滤器(使用set\u filter
)来只选择特定范围内的消息?请参阅Andrey最新和最棒的日志:
作用域堆栈实现为特定于线程的全局存储
内部。有一个命名的_scope属性允许挂接
将该堆栈插入日志记录管道。此属性生成值
的实例,该嵌套类型名为\u scope::scope\u stack
范围堆栈。可以通过以下方式注册该属性:
logging::core::get()->添加全局属性(“范围”,
attrs::named_scope())
然后,您应该将前端接收器筛选器配置为仅锁定您感兴趣的标记(在筛选器lambda或您传递到set_filter()的自定义筛选器中,您可以使用以下命令来提取作用域名称,假设您使用MBCS)
typedef attrs::basic_named_scope::value_type scope_stack;
日志记录::值_提取器S(“范围”);
范围_堆栈s=*s(rec);
如果(s.empty()==false)
{
const attrs::basic_named_scope_entry&e=s.back();
//按e.scope\u名称筛选
...
}
我希望它对您有用:)谢谢您的提示和解释。我已经离开Boost了。去年登录。在将其纳入Boost之前,它很难维护。但如果我再切换回来,这将非常有用。
typedef attrs::basic_named_scope< char >::value_type scope_stack;
logging::value_extractor<char, scope_stack> S("Scope");
scope_stack s = *S(rec);
if ( s.empty() == false )
{
const attrs::basic_named_scope_entry<char>& e = s.back();
// Filter by e.scope_name
...
}