boostlog

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Boost Log

简介

Boost Log

Overview

VIM Research Group

先进感知与控制实验室

中国科学技术大学信息科学技术学院

2015年2月

修改记录

Index Author Revision Date Remark

1 江坤V1.0 2014-02-09 初始版本

1. 安装 (4)

1.1. 软硬件需求 (4)

1.1.1.软件需求 (4)

1.1.2.硬件需求 (4)

1.2. 安装流程 (4)

2. Boost log 简介 (5)

3. Boost Log 基本使用流程 (6)

3.1. 案例一:Boost Log简单输出到控制台 (6)

3.2. 案例二:Boost Log简单输出到控制台 (7)

3.3. 案例三:Boost Log简单输出到控制台 (7)

4. 结论 (9)

本文档用于描述boost log 的安装,日常使用以及功能扩展。

1.安装

本部分描述boost 1.57.0的安装方法。

1.1.软硬件需求

1.1.1.软件需求

安装boost库的主机需支持GCC和GCC-C++之外,还需要两个开发库:bzip2-devel 和python-devel。

1.1.

2.硬件需求

运行Ubuntu12.04操作系统的主机一台。

1.2.安装流程

首先于Boost Libraries的官网下载Boost 1.57.0的安装包,下载地址如下http://www.boost .org/users/history/version_1_57_0.html。然后解压缩,进入到boost_1_57_0的目录下。

若在本机之前已安装过老版本的boost库,需要将之前include文件夹下和动态库中boost 库的相关文件删除,然后再编译安装,由于boost源码包中自带配置脚本,可直接使用,即运行booststrap.sh这个脚本配置。然后按照提示信息,输入sudo ./b2指令编译,然后就是漫长的等待,等待其是否编译成功。当输出如下信息表明编译成功:

若为安装成功需按照提示信息做相应处理,若未安装bzip2-devel 或python-devel会提示报错此时需安装相应的库,再重新安装。

最后运行./b2 install --prefix=/usr/local指令完成boost库的安装,安装后的头文件在

/usr/local/include/boost里面,而相应的库在/usr/local/lib/libboost_*。

2.Boost log 简介

本节将简单介绍Boost Log 架构,及其工作流程。Boost Log的工作流程如下图所示:

如上图所示,Boost Log工作过程主要包括三部分,即收集源端日志信息,根据设置处理源端日志信息,最后将处理后的日志信息输出到指定的位置。

上图最左端描述的是收集日志信息:日志信息的输出源可以根据需求进行多种设置,包括全局的,局部的等等,在代码中一般表现为声明输出日志的对象,再指定日志的等级从而将其输出。同时Boost Log也提供类似于cout类相似的更能,即不需要声明输出源,直接输出日志信息。

上图中间部分为日志信息处理过程,比较典型的是对于过滤器的设置,即设置日志信息的输出权限,屏蔽低等级日志信息的输出,同时也可以对其增加时间发生的时间等信息,从而更详尽的描述已发生的事件,这部分大多数为系统自带的函数,需要做的仅仅是为满足需求所做的一些配置,并不需要编写太多代码。

上图最右边的两部分则展现了日志输出的过程,首先需将经处理的数据取出,然后再将处理后的日志信息输出到指定的位置,需要说明的是,Boost Log不仅支持输出日志信息,还支持输出统计数据,如在windows下输出到EXCEL以及发出警报声。这一过程,与处理信息部分交互的代码多为系统自带,并不需要编写,而输出部分,虽然Boost Log提供了很多选择,但也开放了接口,从而更好的满足用户的需求。

上图所示的工作流程为Boost Log一般工作过程,而若仅仅是简单的使用Boost Log,并不需要编写整个流程的代码,只需要根据需求进行简单的设置即可,Boost Log本身提供了多种设置选项,可满足大多数需求。但能够了解Boost Log的工作流程对于较复杂的日志设置还是很有帮助的。

3.Boost Log 基本使用流程

若仅仅是对于Boost Log的简单使用,代码的编写并不复杂。若仅仅是实现类似于cout 类似的功能,包含头文件后直接调用即可。而稍复杂的应用案例,首先应当写好初始化函数指定配置信息,再在使用前初始化,然后再根据设置调用相应的日志信息输出函数即可,使用起来并不复杂。但是,编译的时候注意要依次加载libboost_log_setup.a,libboost_log.a,libboost thread, libboostsystem这几个库,需注意的是,一定要将libboost_log_setup.a 置于libboost_log.a 之前,否则编译很难通过。另外还需加载宏BOOST_LOG_DYN_LINK或者BOOST_ALL_DYN_LINK。下面将结合三个具体案例介绍Boost Log的使用,更多的功能还需查阅相关资料实现。

3.1.案例一:Boost Log简单输出到控制台

该案例所实现的功能类似于cout的输出功能,但相较于cout的简单输出,其对于系统的软硬件开销更小,提供的信息更为丰富,包括时间,等级,输出信息的线程标号。其代码如下:#include

int main(int, char*[])

{

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";

return 0;

}

如上输入代码,经前文所述的编译方式,可得到如下图的输出结果:

上图输出的信息依次为日志发生的时间,输出线程标号,等级以及具体的输出信息。

相关文档
最新文档