boost log库使用六
来源:互联网 发布:苹果抢购软件 编辑:程序博客网 时间:2024/06/04 19:38
这次演示如何在一个程序中使用两个sink. 这两个sink有不同的filter,生成两个日志文件,采用不同的日志格式。
完整代码如下:
#include <fstream>#include <boost/shared_ptr.hpp>#include <boost/make_shared.hpp>#include <boost/log/core.hpp>#include <boost/log/trivial.hpp>#include <boost/log/expressions.hpp>#include <boost/log/sinks/sync_frontend.hpp>#include <boost/log/sinks/text_ostream_backend.hpp>#include <boost/log/sources/severity_logger.hpp>#include <boost/log/sources/record_ostream.hpp>#include <boost/log/utility/setup/common_attributes.hpp>#include <boost/log/support/date_time.hpp>#include <boost/thread/thread.hpp>#include <boost/log/attributes/scoped_attribute.hpp>namespace logging = boost::log;namespace src = boost::log::sources;namespace expr = boost::log::expressions;namespace sinks = boost::log::sinks;namespace keywords = boost::log::keywords;using namespace logging::trivial;void InitLog() { typedef sinks::synchronous_sink< sinks::text_ostream_backend > text_sink; boost::shared_ptr< text_sink > sink1 = boost::make_shared< text_sink >(); sink1->locked_backend()->add_stream( boost::make_shared< std::ofstream >("sign.log")); sink1->set_formatter ( expr::format("[%1%]<%2%>(%3%): %4%") % expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S") % logging::trivial::severity % expr::attr<boost::log::attributes::current_thread_id::value_type >("ThreadID") % expr::smessage ); logging::core::get()->add_sink(sink1); sink1->set_filter(expr::attr< severity_level >("Severity") >= warning); boost::shared_ptr< text_sink > sink2 = boost::make_shared< text_sink >(); sink2->locked_backend()->add_stream( boost::make_shared< std::ofstream >("sign.csv")); sink2->set_formatter ( expr::format("%1%,%2%,%3%") % expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S") % logging::trivial::severity % expr::smessage ); logging::core::get()->add_sink(sink2); sink2->set_filter(expr::attr< severity_level >("Severity") < warning); logging::add_common_attributes(); BOOST_LOG_SCOPED_THREAD_TAG("ThreadID", boost::this_thread::get_id());}int main(int, char*[]) { InitLog(); src::severity_logger<severity_level> lg; BOOST_LOG_SEV(lg, trace) << "A trace severity message"; BOOST_LOG_SEV(lg, debug) << "A debug severity message"; BOOST_LOG_SEV(lg, info) << "An informational severity message"; BOOST_LOG_SEV(lg, warning) << "A warning severity message"; BOOST_LOG_SEV(lg, error) << "An error severity message"; BOOST_LOG_SEV(lg, fatal) << "A fatal severity message"; return 0;}在上面的例子里面,我创建了sink1 和 sink2对象。sink1输出sign.log文件,sink2输出sign.csv文件。
所有严重级别大于等于warning的日志会出现在sign.log文件中,所有低于warning的日志会被记录在sign.csv文件中,并以csv格式保存。
运行这个例子会看到两个文件的结果:
$ cat sign.csv2013-12-25 16:31:27,trace,A trace severity message2013-12-25 16:31:27,debug,A debug severity message2013-12-25 16:31:27,info,An informational severity message $ cat sign.log[2013-12-25 16:31:27]<warning>(0x00007f64b5cf3740): A warning severity message[2013-12-25 16:31:27]<error>(0x00007f64b5cf3740): An error severity message[2013-12-25 16:31:27]<fatal>(0x00007f64b5cf3740): A fatal severity message
1 0
- boost log库使用六
- boost log库使用一
- boost log库使用二
- boost log库使用三
- boost log库使用四
- boost log库使用五
- boost log库 使用七
- boost log库 使用十
- boost log库 使用八
- boost log库 使用九
- boost log库 使用十一
- Boost log库的使用
- Boost Log库使用介绍
- BOOST Log 使用 Unicode
- Boost log 简单使用
- boost log 使用问题
- Boost log 简单使用
- boost的log使用
- 网站架构之缓存应用(摘录)
- Flash与Flex配合开发,flash导出swc到flex
- 第二十九天【java虐我千百遍,我待java如初恋】
- 自己总结的log4j 可分类--分方法--分参数--分时间显示log.txt
- 关于C语言的void main()
- boost log库使用六
- 纯虚析构函数
- BOW模型在ANN框架下的解释
- Codeforces Round #221 (Div. 2) A. Lever
- 10046
- java List排序
- 黑马程序员---JAVA基础学习之软件开发介绍、java介绍、path配置、第一个程序
- 关于UIView的autoresizingMask属性的研究
- 【redis】redis集群配置小结