Boost Log 1

Posted zhanghuan_wangkai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Boost Log 1相关的知识,希望对你有一定的参考价值。

Boost Log 基本用法
flyfish 2014-11-5



根据boost提供的代码示例,学习Boost Log 的基本用法


前提
boost版本boost_1_56_0
示例代码文件夹 boost_1_56_0\\libs\\log\\example\\basic_usage


使用的单词很形象,整个过程就像流水一样
假设要输出的日志比作水

  水                     (Hello, World!)
  水槽                 (sink)
  流向哪里        (console,file)
  从哪里取        (source)

  水的等级        (severity level)
  过滤输出        (filter)
  格式输出        (format)
  各部分连接者(core)


示例

[cpp]  view plain  copy  
  1. #include <iostream>  
  2.   
  3.   
  4. #include <boost/log/common.hpp>  
  5. #include <boost/log/expressions.hpp>  
  6.   
  7.   
  8. #include <boost/log/utility/setup/file.hpp>  
  9. #include <boost/log/utility/setup/console.hpp>  
  10. #include <boost/log/utility/setup/common_attributes.hpp>  
  11.   
  12.   
  13. #include <boost/log/attributes/timer.hpp>  
  14. #include <boost/log/attributes/named_scope.hpp>  
  15.   
  16.   
  17. #include <boost/log/sources/logger.hpp>  
  18.   
  19.   
  20. #include <boost/log/support/date_time.hpp>  
  21.   
  22.   
  23. namespace logging = boost::log;  
  24. namespace sinks = boost::log::sinks;  
  25. namespace attrs = boost::log::attributes;  
  26. namespace src = boost::log::sources;  
  27. namespace expr = boost::log::expressions;  
  28. namespace keywords = boost::log::keywords;  
  29.   
  30.   
  31. using boost::shared_ptr;  
  32.   
  33.   
  34. // Here we define our application severity levels.  
  35. enum severity_level  
  36.   
  37.     normal,  
  38.     notification,  
  39.     warning,  
  40.     error,  
  41.     critical  
  42. ;  
  43.   
  44.   
  45. // The formatting logic for the severity level  
  46. templatetypename CharT, typename TraitsT >  
  47. inline std::basic_ostream< CharT, TraitsT >& operator<< (  
  48.     std::basic_ostream< CharT, TraitsT >& strm, severity_level lvl)  
  49.   
  50.     static const charconst str[] =  
  51.       
  52.         "normal",  
  53.         "notification",  
  54.         "warning",  
  55.         "error",  
  56.         "critical"  
  57.     ;  
  58.     if (static_cast< std::size_t >(lvl) < (sizeof(str) / sizeof(*str)))  
  59.         strm << str[lvl];  
  60.     else  
  61.         strm << static_castint >(lvl);  
  62.     return strm;  
  63.   
  64.   
  65.   
  66. int _tmain(int argc, char* argv[])  
  67.   
  68.     // This is a simple tutorial/example of Boost.Log usage  
  69.   
  70.   
  71.     // The first thing we have to do to get using the library is  
  72.     // to set up the logging sinks - i.e. where the logs will be written to.  
  73.     logging::add_console_log(std::clog, keywords::format = "%TimeStamp%: %Message%");  
  74.   
  75.   
  76.     // One can also use lambda expressions to setup filters and formatters  
  77.     logging::add_file_log  
  78.     (  
  79.         "sample.log",  
  80.         keywords::filter = expr::attr< severity_level >("Severity") >= warning,  
  81.         keywords::format = expr::stream  
  82.             << expr::format_date_time< boost::posix_time::ptime >("TimeStamp""%Y-%m-%d, %H:%M:%S.%f")  
  83.             << " [" << expr::format_date_time< attrs::timer::value_type >("Uptime""%O:%M:%S")  
  84.             << "] [" << expr::format_named_scope("Scope", keywords::format = "%n (%f:%l)")  
  85.             << "] <" << expr::attr< severity_level >("Severity")  
  86.             << "> " << expr::message  
  87. /* 
  88.         keywords::format = expr::format("%1% [%2%] [%3%] <%4%> %5%") 
  89.             % expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d, %H:%M:%S.%f") 
  90.             % expr::format_date_time< attrs::timer::value_type >("Uptime", "%O:%M:%S") 
  91.             % expr::format_named_scope("Scope", keywords::format = "%n (%f:%l)") 
  92.             % expr::attr< severity_level >("Severity") 
  93.             % expr::message 
  94. */  
  95.     );  
  96.   
  97.   
  98.     // Also let's add some commonly used attributes, like timestamp and record counter.  
  99.     logging::add_common_attributes();  
  100.     logging::core::get()->add_thread_attribute("Scope", attrs::named_scope());  
  101.   
  102.   
  103.     BOOST_LOG_FUNCTION();  
  104.   
  105.   
  106.     // Now our logs will be written both to the console and to the file.  
  107.     // Let's do a quick test and output something. We have to create a logger for this.  
  108.     src::logger lg;  
  109.   
  110.   
  111.     // And output...  
  112.     BOOST_LOG(lg) << "Hello, World!";  
  113.   
  114.   
  115. Boost Log 运行时优化

    提升日志记录集输出级别

    Boost Log 1

    Boost Log 1

    多边形交叉与Boost ::几何严重的性能恶化

    boost::log随笔