如何通过 boost::log 打印到具有不同属性的不同日志?
How to print to different logs with different attributes by boost::log?
例如,我的日志消息有 4 个级别(或属性):
"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 个级别(属性)。如何将带有属性的消息打印到一个日志中,将具有其他属性的消息打印到另一个日志中?
借用boost文档中的一些代码,你可能会逃脱这种方法:
using text_sink = sinks::synchronous_sink< sinks::text_ostream_backend >;
boost::shared_ptr< text_sink > sink = boost::make_shared< text_sink >();
sink->locked_backend()->add_stream(
boost::make_shared< std::ofstream >("regular.log"));
// set your 1st formatter
sink->set_filter(expr::has_attr(tag_attr) && (tag_attr == "action" || tag_attr == "warning"));
logging::core::get()->add_sink(sink);
sink = boost::make_shared< text_sink >();
sink->locked_backend()->add_stream(
boost::make_shared< std::ofstream >("fatal.log"));
// set your 2nd formatter
sink->set_filter(expr::has_attr(tag_attr) && (tag_attr == "error" || tag_attr == "exception"));
logging::core::get()->add_sink(sink);
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- C++概念:如何使用'concept'检查模板化结构的属性?
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 通过指向指针数组的指针访问子类的属性
- MSVC是否支持C++11样式的属性而不是__declspec
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 类的C++属性似乎已重新初始化
- Qt Quick-如何仅从c++代码与qml属性交互
- 用概念检查属性的类型
- C++如何将同一类的实例作为属性
- 按多个属性排序
- 主函数参数的属性
- 如何通过 boost::log 打印到具有不同属性的不同日志?
- boost日志格式单一属性,带有logging::init_from_stream
- 提升::日志 - 使用严重性和自定义过滤器属性记录?要使用的宏
- 如何使用Qt Windows中的设置路径属性从命令行运行应用程序(.exe)时在命令行上打印日志
- 提升日志和严重性/本地属性
- 日志含义添加PW_USER_PASSWORD属性失败
- 提升日志记录类属性