Я использую Boost.Log, который является частью Boost v1.54. У меня есть приемник, который я хочу принимать только сообщения журнала из текущего потока. Как я могу это достичь?Boost.Log: как фильтровать по текущей теме id
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);
Без последней строки все работает нормально, и когда я настраиваю форматер раковины, он выводит идентификатор вызывающего потока. Каков правильный способ сравнить атрибут thread_id с currentThreadId? Я знаю, что могу использовать какой-то пользовательский атрибут для тегов сообщений с текущим идентификатором потока, а затем отфильтровать их по этому атрибуту, но как насчет атрибута current_thread_id по умолчанию boost? Используется ли для этой цели?