例如,我的日志消息有4个级别(或属性):如何通过boost :: log打印到具有不同属性的不同日志?
"error","warning","exception","action".
我想打印的消息,其属性为“错误”或“例外” fatal.log
,以及属性打印的消息是“行动”和“警告”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个级别(属性)。如何将具有属性的消息打印到一个日志中并将具有其他属性的消息打印到另一个日志中
你也许可以通过在你的文件水槽设置过滤器解决这个问题,一会筛选属性等于“错误”或“异常“和其他”动作“和”警告“ –