我正在尝试将Boost Log用于我的日志记录框架,而且我遇到了一些问题。我有严重记录器工作正常。但是,我想要做的是在我的日志消息中添加自定义标记,以便我可以跟踪消息来自哪个类/模块。不幸的是,无论我做什么,额外的痕迹都不会出现!
boost::log::core::get()->add_global_attribute("Scope", boost::log::attributes::named_scope());
BOOST_LOG_NAMED_SCOPE("named_scope_logging");
BOOST_LOG(Logger::get()) << "Hello";
BOOST_LOG_SCOPED_THREAD_TAG("Tag", "Called from A::bar");
BOOST_LOG(Logger::get()) << "Hello";
基本上,以上都不会对日志输出产生任何形式的修改。我必须遗漏一些非常基本的东西......
答案 0 :(得分:2)
您可能忘记将这些属性添加到格式化程序中。例如,命名范围格式化程序记录为here。 BOOST_LOG_SCOPED_THREAD_TAG
添加了一个字符串属性,可以使用简单的attr
expression格式化。例如:
sink->set_formatter
(
expr::stream << "["
<< expr::format_named_scope("Scope", keywords::format = "%n")
<< "] ("
<< expr::attr< std::string >("Tag")
<< ") " << expr::smessage
);