如何通过boost :: log打印到具有不同属性的不同日志?

时间:2016-12-02 18:50:14

标签: c++ logging boost

例如,我的日志消息有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个级别(属性)。如何将带有属性的消息打印到一个日志中,将带有其他属性的消息打印到另一个日志中?

1 个答案:

答案 0 :(得分:0)

借用boost documentation中的一些代码,您可能会采用这种方法:

Sub Button_Click()