关于spdlog的说明

各位看官,本人最近正在致力于研究log的写法,其中我看了一下我们公司,用的是github上的一个开源项目spdlog,所以我就研究了一下,并且试着模仿了一下我们公司打log的方法,现在就和各位看官一起分享一下。

一、Spdlog的定义以及他的优点

二、Spdlog如何移植

三、SpdLog的基本结构特性

四、我这边是如何使用

 

 

一、Spdlog的定义以及他的优点

 

Spdlog是一款开源的,基于c++的的日志库,简单来说,只要我们采用了这个开源库,我们就可以随意的来记录日志了(这个日志包括再stdout上显示和再文件中显示)。它有如下特性:

优点:1、它是一款轻量级别的库,我全部下载完也不过几百k(压缩包)。

          2、他的使用条件非常灵活,可以单线程用,也可以多线程用(不过我还没玩过多线程),

          3、使用形式非常灵活,就是你想把log形式定义成什么样的都可以。

          4、输出形式灵活并且效果很好,比如你可以设置成日志一天一清,也可以把日志设置成多个文件的,另外输入的日志也可以设置颜色,这也是我最喜欢的部分。

          5、日志分层:日志分成INFODEBUGTRACEERROR等多种分层,我们可以根据需要设置自己每一条日志的等级。

          6、我觉得开发这个的作者很贴心,把所有的使用方法都写成例子让你去看。

 

缺点:1、它必须是基于c++11以上版本的(其实我觉得这都不能算是缺点)

二、spdlog如何移植

我觉得spdlog移植的方法也很容易,只需要按照三个步骤:(我是linux系统的)

1、下载,放入linux系统

2、解压

3、创建build,进入build目录,执行cmake .. &make install(这里要说明的是一定要用make install,如果用make -j,如果只是把include放进去,会提示你没有权限)。好了,这样我们的spdlog就移植完成了。

三、spdlog的基本结构特性

我们从两个方面来说明:

横向方面:根据我们输入日志的不同我们创建的类型也有所不同(为了节省时间,我就不写参数了)

1、创建当天日志

spdlog::daily_logger_mt

说明:该日志创建成功以后,写入的日志只在当天生效,简单来说,就是在一天的某个时间点(这个函数中有参数可以设置)就会把日志清空。

2、创建多个文件日志

spdlog::rotating_logger_mt

说明:该日志创建成功以后,如果我们写入的日志大小大于某个值(这个值参数当中会有设置)会创建一个新文件,然后将新的日志写入到新文件当中。另外还要注意的是创建的文件数目也可以设定。

3、创建单个文件日志

spdlog::basic_logger_mt

说明:该日志创建成功以后,我们只会创建单个文件,所有日志都会一直再这个文件中累加。

4、输出终端

spdlog::stdout_color_mt

说明:该日志创建成功以后,我们的日志会自动打印到终端上,另外,每一种等级的日志颜色都会有所不同。

 

当然,example中提供的方法还远不止这几种,比如二进制的输出,异步的输出等等,不过我这里能用到的就是这些了。

纵向:

1、创建日志

2、设置level的值(默认是info

3、使用函数打印

 

四、我这边如何使用

1、创建日志的值(我这边默认的是rotating

2、设置log等级和pattern

3、使用宏封一层

4、直接使用

 

总结:今天聊了spdlog的特性,安装,基本数据类型和使用,总体来说我觉得简单,轻便,使用起来容易上手,真的是一个很不错的代码。

原文地址:https://www.cnblogs.com/songyuchen/p/14208795.html