我正在使用 Boost.Log,它是 Boost v1.54 的一部分。我有一个接收器,我只想接受来自当前线程的日志消息。我怎样才能做到这一点?
BOOST_LOG_ATTRIBUTE_KEYWORD(thread_id, "ThreadID", logging::attributes::current_thread_id::value_type)
std::stringstream stream;
logging::add_common_attributes();
boost::shared_ptr<text_sink> sink = boost::make_shared<text_sink>();
sink->locked_backend()->add_stream(stream);
logging::core::get()->add_sink(sink);
boost::thread::id currentThreadId = boost::this_thread::get_id();
// At this line compiler complains about the '==' operator.
sink->set_filter(thread_id == currentThreadId);
如果没有最后一行,一切正常,当我配置接收器格式化程序时,它会输出调用线程 ID。将 thread_id 属性与 currentThreadId 进行比较的正确方法是什么?我知道我可以使用一些自定义属性来使用当前线程 ID 标记消息,然后按该属性过滤它们,但是默认 boost 的 current_thread_id 属性呢?它可以用于这样的目的吗?