Форматирование атрибута области в пользовательской функции формата журнала повышения

Я использую пользовательскую функцию форматирования и пытаюсь понять, как форматировать атрибут области. Примеры в документации по ускорению, которые я нашел, относятся к средствам форматирования лямбда-выражений, которые я не знаю, как использовать в своей функции форматирования. Прямо сейчас я успешно использую такие атрибуты, как метка времени, но атрибут области ускользает от меня.

BOOST_LOG_ATTRIBUTE_KEYWORD(scope, "Scope", attributes::named_scope_list)
BOOST_LOG_ATTRIBUTE_KEYWORD(timestamp, "TimeStamp", boost::posix_time::ptime)

void formatter(boost::log::record_view const& record, boost::log::formatting_ostream& stream) {
  stream << record[timestamp];
  // stream << record[scope].file_name or something like that
} 

person css    schedule 29.04.2014    source источник


Ответы (1)


Когда вы извлекаете атрибут, он дает вам named_scope_list, который, как следует из названия, представляет собой список named_scope. Каждый named_scope представляет собой struct, содержащий файл, строку и имя области действия (имя функции).

Таким образом, его можно использовать так:

attributes::named_scope_list scopeList = record[scope].get();
for (attributes::named_scope_list::const_iterator iter = scopeList.begin(); iter != scopeList.end(); ++iter)
{
  stream << iter->line;
}
person css    schedule 29.04.2014