码迷,mamicode.com
首页 > 其他好文 > 详细

boost.log(二)过滤

时间:2015-04-28 13:29:15      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

日志过滤

严重级别可以使日志信息更加翔实,但通常也会成为筛选器用来过滤日志记录的工具。在Log库的core里面可以通过设置全局过滤器很容易地做到日志过滤,就像下面一样:
  1. #include <iostream>
  2. #include <boost/log/core.hpp>
  3. #include <boost/log/trivial.hpp>
  4. #include <boost/log/expressions.hpp>
  5. void init()
  6. {
  7. boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::info);
  8. }
  9. int main(int, char*[])
  10. {
  11. init();
  12. BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
  13. BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
  14. BOOST_LOG_TRIVIAL(info) << "An informational severity message";
  15. BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
  16. BOOST_LOG_TRIVIAL(error) << "An error severity message";
  17. BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
  18. system("pause");
  19. return 0;
  20. }
现在运行代码后前两个日志将被忽略,而后面四个日志会在控制台输出。这是因为我们筛选了严重级别大于boost::log::trivial::info的日志。

【重要】请记住,流表达式只会执行那些通过了过滤的结果。绝对不要在流表达式上指定关键业务的调用,因为如果日志被过滤掉了,这些调用必定不能被调用。

在调用set_filter函数时,其左侧的参数是一个占位符,描述要检查的属性。右侧的参数是要对照检查的值。boost::log::trivial::severity关键字是由Log库提供的占位符,此占位符表示严重级别的属性值。右侧的参数是Log库的枚举类型severity_level,第一节中有提到。然后表达式通过>=运算符过滤掉了严重等级小于boost::log::trivial::info的日志信息,最终将结果输出到控制台上。你也可以构建更复杂的过滤器,结合逻辑判断相互搭配,甚至还可以定义自己的过滤函数。




boost.log(二)过滤

标签:

原文地址:http://www.cnblogs.com/zhangpanyi/p/4462509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!