boost log库使用三

原创 2013年12月03日 16:55:45

现在,我要将日志写到本地文件中。我的例子代码比官方文档简单点。

#include <iostream>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/utility/setup/file.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;
  logging::add_file_log("sample.log");
  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";
 
  BOOST_LOG_TRIVIAL(info) << "--------------------" << 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";
}

不要忘记包含头文件

<boost/log/utility/setup/file.hpp>

,否则你会遇到编译错误:

no member named 'add_file_log' in namespace 'boost::log'

现在运行程序,可以看到当前目录下有了sample.log文件。内容如下:

$ cat sample.log
An informational severity message
A warning severity message
An error severity message
A fatal severity message
--------------------
A debug severity message
An informational severity message
A warning severity message
An error severity message
A fatal severity messag

现在我们遇到了sink的概念。sink决定日志信息输出到什么地方。在前面两篇文章中,我没有添加sink。boost log使用console作为默认的sink. 现在,因为我调用了add_file_log函数,因此默认的sink被file sink取代。要设置sink, 需要将其添加到core中,上面的例子只用了一行代码:

logging::add_file_log("sample.log");

boost log还有一个概念叫做source。这个文档描述了boost log设计的架构。




左边是 log source, 负责从程序中收集日志信息,就像这样的语句:

BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
右边是sink, 负责处理日志信息,决定日志输出到哪里,怎么使用。

中间的logging core将它们连接在一起。




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

相关文章推荐

Boost Log 基本用法

Boost Log 基本用法 flyfish 2014-11-5 根据boost提供的代码示例,学习Boost Log 的基本用法 前提 boost版本boost_1_56_0...

boost::log库,示例代码

测试环境: [1]boost 1.57 [2]VS2013Update3 主要来源 [1]boost官网,做了些微小的改动。 最简单的示例 // TestBoostLog....

Boost.log库使用方法

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

boost log库学习一

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

C++ 日志库 boost::log 以及 glog 的对比

C++ 日志库 boost::log 以及 glog 的对比

Boost log库

本文首先介绍了boost.log的几个重要的概念,然后分析其框架结构,最后详细解析了一段示例代码,并总结了将boost.log应用到自己的程序中时的步骤。   1. 几个概念 日志记录:一个...

Boost Log 的 logger 使用细节

這篇是之前《程式的記錄輔助工具:Boost Log》一文的後續。在該文中,Heresy 主要是整理了一下自己對於 Boost.Log 的理解,並且弄了一個符合 Heresy 自己需求的小範例程式出來。...

linux下创建mysql用户

1、创建mysql数据库的管理用户 数据库安装好后,我们应该为mysql数据库创建一个管理帐号。要把root用户设置为管理员,此时需要执行下面命令: [root@CDS2 bin]# /u...

Linux下安装第2个MySQL

Linux下安装第2个MySQL #tar -zxvf mysql-5.5.37.tar.gz #cd mysql-5.5.37 #cmake -DCMAKE_INSTALL_PREFIX=/...

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

程序日志带来的问题?上面几个例子都是将日志信息输出到控制台上,实际应用中不常用,最常用的情况是我们将日志信息输出到文本文件中,方便我们以后查看,同时程序不运行时日志信息也不会丢掉。输出到文件中后,又带...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boost log库使用三
举报原因:
原因补充:

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