我正在使用Boost.Log库。我创建了一个named_scope
属性,可以跟踪我在代码中的位置。 (我用BOOST_LOG_NAMED_SCOPE("...")
手动指定。)是否可以创建一个过滤器(使用set_filter
),只选择来自特定范围的消息?
答案 0 :(得分:2)
请参阅安德烈的最新版本最大的记录doc:
作用域堆栈实现为特定于线程的全局存储 内部。有一个允许挂钩的named_scope属性 这个堆栈进入日志管道。此属性生成值 嵌套类型named_scope :: scope_stack是的实例 范围堆栈。可以通过以下方式注册该属性:
测井::芯::得到() - > add_global_attribute( “范围”, ATTRS :: named_scope());
然后,您应该配置前端接收器过滤器以仅锁定您感兴趣的标签(在过滤器lambda中或您传递给set_filter()的自定义过滤器中,您可以使用以下内容:为了提取范围名称,假设您使用MBCS)
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
...
}
我希望它对你有用:)