例えば、私のログメッセージは、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つのログを生成するようです。 1つのログに属性を含むメッセージを印刷し、他の属性を持つメッセージを別のログに出力する方法は?
あなたはおそらくあなたのファイルシンクの上にフィルタを設定することによって、これを解決することができ、1は属性が等しくフィルタリングだろう「エラー」または "へ例外 "と他の"アクション "と"警告 " –