boostlog
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}
如上输入代码,经前文所述的编译方式,可得到如下图的输出结果:
上图输出的信息依次为日志发生的时间,输出线程标号,等级以及具体的输出信息。