例如,我的日志消息有4个级别(或属性):
"error","warning","exception","action".
我想将属性为“error”或“exception”的邮件打印到fatal.log
,并将属性为“action”和“warning”的邮件打印到regular.log
。
通过在线搜索:
boost::shared_ptr<sinks::text_multifile_backend> backend = boost::make_shared< sinks::text_multifile_backend >();
backend->set_file_name_composer
(
sinks::file::as_file_name_composer(boost::log::expressions::stream << boost::log::expressions::attr< std::string >("level") << ".log")
);
typedef sinks::synchronous_sink< sinks::text_multifile_backend > sink_t;
boost::shared_ptr< sink_t > sink(new sink_t(backend));
// Set the formatter
sink->set_formatter
(
boost::log::expressions::stream
<< boost::log::expressions::attr< std::string >("level")
<< boost::log::expressions::smessage
);
似乎我可以按级别(属性)生成不同的日志文件并使用
BOOST_LOG_SEV(_logger, level) << message;
将不同的消息打印到不同的日志。但似乎这将生成4个日志,而不仅仅是2个日志,因为我有4个级别(属性)。如何将带有属性的消息打印到一个日志中,将带有其他属性的消息打印到另一个日志中?