boost log库使用二

原创 2013年12月03日 15:51:32

这次,尝试filter,首先代码来自于官方文档。

#include <iostream>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
namespace logging = boost::log;
using namespace std;
void SetFilter() {
  logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info);
}
int main () {
  cout << "hello, world" << endl;
  SetFilter();
  BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
  BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
  BOOST_LOG_TRIVIAL(info) << "An informational severity message";
  BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
  BOOST_LOG_TRIVIAL(error) << "An error severity message";
  BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}

当运行程序后,输出结果变了,trac和debug级别的信息被过滤掉了。

$ ./main
hello, world
[2013-12-03 15:34:47.343223] [0x000007f680e76774] [info]    An informational severity message
[2013-12-03 15:34:47.343324] [0x000007f680e76774] [warning] A warning severity message
[2013-12-03 15:34:47.343341] [0x000007f680e76774] [error]   An error severity message
[2013-12-03 15:34:47.343356] [0x000007f680e76774] [fatal]   A fatal severity message
但是如果我们在运行时改变这个filter的设置,会怎样?现在试试看,修改一下代码:

#include <iostream>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
namespace logging = boost::log;
using namespace std;
void SetFilter1() {
  logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info);
}
void SetFilter2() {
  logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::debug);
}
int main () {
  cout << "hello, world" << endl;
  SetFilter1();
  BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
  BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
  BOOST_LOG_TRIVIAL(info) << "An informational severity message";
  BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
  BOOST_LOG_TRIVIAL(error) << "An error severity message";
  BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
 
  cout << "--------------------" << endl;
  SetFilter2();
  BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
  BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
  BOOST_LOG_TRIVIAL(info) << "An informational severity message";
  BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
  BOOST_LOG_TRIVIAL(error) << "An error severity message";
  BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}
好,现在观察结果。

$ ./main
hello, world
[2013-12-03 15:37:54.399513] [0x000007fd7709a374] [info]    An informational severity message
[2013-12-03 15:37:54.399612] [0x000007fd7709a374] [warning] A warning severity message
[2013-12-03 15:37:54.399630] [0x000007fd7709a374] [error]   An error severity message
[2013-12-03 15:37:54.399644] [0x000007fd7709a374] [fatal]   A fatal severity message
--------------------
[2013-12-03 15:37:54.399666] [0x000007fd7709a374] [debug]   A debug severity message
[2013-12-03 15:37:54.399680] [0x000007fd7709a374] [info]    An informational severity message
[2013-12-03 15:37:54.399693] [0x000007fd7709a374] [warning] A warning severity message
[2013-12-03 15:37:54.399706] [0x000007fd7709a374] [error]   An error severity message
[2013-12-03 15:37:54.399719] [0x000007fd7709a374] [fatal]   A fatal severity message

起作用了。也就是说我们可以在不重新部署程序的情况下修改日志的过滤级别。在我的TCP服务中,可以监听一个管理端口,专门用来接受用于改变过滤级别的特殊消息。

非常好的特性,我喜欢这个功能。



版权声明:本文为博主原创文章,未经博主允许不得转载。

boost log库 使用十一

不同的sinke使用不同的旋转日志
  • sheismylife
  • sheismylife
  • 2013年12月28日 13:40
  • 5029

boost log库 使用八

多线程下使用logger
  • sheismylife
  • sheismylife
  • 2013年12月26日 16:54
  • 5225

boost log库使用 十二 架构研究和主要使用总结

原帖地址:http://blog.csdn.net/csfreebird/article/details/20213349
  • comhaqs
  • comhaqs
  • 2014年07月24日 11:22
  • 976

Boost.log库使用方法

做服务器开发首要做的事情,就是将日志系统建立起来。这个系统也是方便我们检查服务器的问题。 初始化日志系统这是一个初始化日志系统的代码。我这里是使用了一个配置文件来做boost.log的设置的。所以代...
  • erlang_hell
  • erlang_hell
  • 2016年08月25日 10:40
  • 2493

boost log库学习一

对日志的思考为什么需要日志?如今的应用程序都非常大,代码变得难以测试及调试。而且更多的时候,这些程序运行在远离开发人员的远处,使得开发人员几乎没有机会监视程序的执行情况,并且一旦发生错误,很难找出错误...
  • s_lisheng
  • s_lisheng
  • 2017年06月22日 20:00
  • 584

boost log库使用五

这次,我将直接使用sink,而不用add_file_log 函数的帮助。这个例子显示了如何格式化日志,将sink注册到core中,写日志到本地文件。完整的代码在下面。#include #includ...
  • sheismylife
  • sheismylife
  • 2013年12月06日 18:06
  • 5232

boost log库学习使用三(输出日志到文件)

程序日志带来的问题?上面几个例子都是将日志信息输出到控制台上,实际应用中不常用,最常用的情况是我们将日志信息输出到文本文件中,方便我们以后查看,同时程序不运行时日志信息也不会丢掉。输出到文件中后,又带...
  • s_lisheng
  • s_lisheng
  • 2017年06月28日 17:13
  • 1335

boost log 在项目中的应用.

这个是我自己写的一个类. #pragma once #include #include using std::string; #define LOG_DEBUG\ BOO...
  • wangxvfeng101
  • wangxvfeng101
  • 2013年11月13日 15:05
  • 10765

Boost Log 基本用法

Boost Log 基本用法 flyfish 2014-11-5 根据boost提供的代码示例,学习Boost Log 的基本用法 前提 boost版本boost_1_56_0...
  • flyfish1986
  • flyfish1986
  • 2014年11月05日 21:00
  • 18311

boost::log库,示例代码

测试环境: [1]boost 1.57 [2]VS2013Update3 主要来源 [1]boost官网,做了些微小的改动。 最简单的示例 // TestBoostLog....
  • lee353086
  • lee353086
  • 2015年01月19日 16:28
  • 4203
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boost log库使用二
举报原因:
原因补充:

(最多只允许输入30个字)