0
我正在使用Boost.Log库。我创建了一个named_scope
属性,用于跟踪我在代码中的位置。 (我用BOOST_LOG_NAMED_SCOPE("...")
手动指定它。)是否可以创建一个筛选器(使用set_filter
)来仅选择特定范围的消息?按照范围在Boost.Log中筛选
我正在使用Boost.Log库。我创建了一个named_scope
属性,用于跟踪我在代码中的位置。 (我用BOOST_LOG_NAMED_SCOPE("...")
手动指定它。)是否可以创建一个筛选器(使用set_filter
)来仅选择特定范围的消息?按照范围在Boost.Log中筛选
请参阅安德烈的最新&最大记录doc:
范围堆栈实现为特定线程全局存储 内部。 named_scope属性允许将此堆栈挂接到日志记录管道中。此属性生成值为 的嵌套类型named_scope :: scope_stack,它是作用域堆栈的实例 。该属性可以通过以下方式注册:
logging :: core :: get() - > add_global_attribute(“Scope”, attrs :: named_scope());
然后,你应该配置前端水槽过滤器锁存只是你的兴趣标签(在过滤器拉姆达或您的自定义过滤器传递给set_filter(),您可以使用以下,以提取范围名,假设U带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
...
}
我希望它会为你工作:)
谢谢你的指针和解释。去年我已经从Boost.Log移开。在加入Boost之前,维护起来非常困难。但如果我切换回来,这将非常有用。 – foxcub 2013-03-12 15:29:55