例如,我的日誌消息有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個級別(屬性)。如何將具有屬性的消息打印到一個日誌中並將具有其他屬性的消息打印到另一個日誌中
你也許可以通過在你的文件水槽設置過濾器解決這個問題,一會篩選屬性等於「錯誤」或「異常「和其他」動作「和」警告「 –