我正在使用自定义格式化功能,并试图弄清楚如何格式化范围属性。我发现的boost文档中的示例是针对lambda表达式格式化程序的,我不知道如何在格式化程序函数中使用它。现在我成功使用了timetamp这样的属性,但是scope属性让我感到厌烦。
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
}
答案 0 :(得分:2)
当您检索该属性时,它会为您提供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;
}