glog下载、安装、使用

glog下载、安装、使用

2018-08-14 14:52:19 OrangeCat_ 阅读数 1680

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Pig_Pig_Bang/article/details/81632962

简介

  • 最近在学习在程序中加入日志记录系统,通过搜索资料发现了glog这么一个由google开源提供的轻量级日志库,于是便开始了入坑的过程,以下是我学习glog的一点总结

glog下载 

首先我们要做的就是下载glog的源码

1)直接点击github链接《Github/glog源码》进入gibhub页面

2)然后点击Clone or download-------->Download Zip

Github源码下载

Github源码下载

 

3)解压glog-master,目录结构如下图,可以发现目录下有个CMakeLists.txt。所以接下来我们会用到cmake这个工具

glog目录结构

glog-master目录结构

 

4)到cmake的官方链接《cmake下载地址》下载cmake。我选择的是<Windows win32-x86 ZIP>

cmake下载

cmake下载

 

5)解压cmake安装包之后,我们要做的就是把<cmake/bin>加入环境变量,右键我的电脑-->高级系统设置-->环境变量。

 

6)按下Win+R,然后输入 cmake-gui,可以看到如下窗口 

 

7)点击Configure按扭,选择Visual Studio 版本,会弹出一些红色的选项,做一下简单的修改就行.

记住安装路径不要选择系统目录,不然后续操作会因为没有管理员权限失败

8)点击Generate、Open Project即可打开解决方案

 

9)在刚刚的CMAKE_INSTALL_PREFIX路径中可以看到生成的glog静态库文件

至些glog静态库生成完成,接下来就是一个简单的例子去使用glog了。


老板,来个粟子吧

下面开始举个例子,直接用VS创建一个控制台应用程序,然后做如下配置

  • 右键项目属性
  • 配置属性-->C/C++-->常规-->附加包含目录-->添加 <glog安装路径>/include
  • 配置属性-->链接器-->常规-->附加库目录-->添加<glog安装路径>/lib
  • 配置属性-->链接器-->输入-->附加依赖项-->添加glogd.lib(如果你的程序是Release版本就写glog.lib)

之后就可以写一个最简单的glog代码示例

 
  1. // USEglog.cpp : 定义控制台应用程序的入口点。

  2. //

  3.  
  4. #include "stdafx.h"

  5.  
  6. #define GOOGLE_GLOG_DLL_DECL // 由于我们使用的glog的静态库,一定要定义这个宏

  7.  
  8. #include "glog/logging.h"

  9.  
  10. int main(int argc, char* argv[])

  11. {

  12. google::InitGoogleLogging(argv[0]); // 全局初始化glog

  13. google::SetStderrLogging(google::INFO); // 设置glog的输出级别,这里的含义是输出INFO级别以上的信息

  14.  
  15. LOG(INFO) << "This is my first glog INFO "; // 像C++标准流一样去使用就可以了,这时把这条信息定义为INFO级别

  16.  
  17. google::ShutdownGoogleLogging(); // 全局关闭glog

  18. return 0;

  19. }

输出如下图

那我们这做的和cout << xxxx 有区别呢?是的没啥区别,我就是在坑大家!!!!开个玩笑,看接下来的配置


修改glog的一些设置

1)修改我们样例程序的代码

 
  1. // USEglog.cpp : 定义控制台应用程序的入口点。

  2. //

  3.  
  4. #include "stdafx.h"

  5.  
  6. #define GOOGLE_GLOG_DLL_DECL // 由于我们使用的glog的静态库,一定要定义这个宏

  7.  
  8. #include "glog/logging.h"

  9.  
  10. int main(int argc, char* argv[])

  11. {

  12. google::InitGoogleLogging(argv[0]); // 全局初始化glog

  13. google::SetStderrLogging(google::WARNING); // 设置glog的输出级别,这里的含义是输出WARNING级别以上的信息

  14.  
  15. LOG(INFO) << "This is my first glog INFO "; // 像C++标准流一样去使用就可以了,把这条信息定义为INFO级别

  16. LOG(WARNING) << "This is my first glog WARNING"; // 像C++标准流一样去使用就可以了,把这条信息定义为WARNING级别

  17. LOG(ERROR) << "This is my first glog ERROR"; // 像C++标准流一样去使用就可以了,把这条信息定义为ERROR级别

  18.  
  19. google::ShutdownGoogleLogging(); // 全局关闭glog

  20.  
  21. return 0;

  22. }

  23.  

2)输出如下,可以看到WARNING和ERROR级别的信息,

3)但是INFO级别的信息我们没有看到,这是因为我在代码中有这么一行设置。 

google::SetStderrLogging(google::WARNING);       // 设置glog的输出级别,这里的含义是输出WARNING级别以上的信息

 glog一共有4个级别的信息可以定义

  • INFO
  • WARNING
  • ERROR
  • FATAL(这个级别的输出会导致程序强制中断)

 4)增加一行代码,可以在终端区分颜色

    FLAGS_colorlogtostderr = true;                   // 开启终端颜色区分


将glog日志信息写入到磁盘log文件中

1)修改样例程序代码如下

 
  1. // USEglog.cpp : 定义控制台应用程序的入口点。

  2. //

  3.  
  4. #include "stdafx.h"

  5.  
  6. #define GOOGLE_GLOG_DLL_DECL // 由于我们使用的glog的静态库,一定要定义这个宏

  7.  
  8. #include "glog/logging.h"

  9.  
  10. int main(int argc, char* argv[])

  11. {

  12. google::InitGoogleLogging(argv[0]); // 全局初始化glog

  13. google::SetStderrLogging(google::GLOG_INFO); // 设置glog的输出级别,这里的含义是输出INFO级别以上的信息

  14.  
  15. // 设置INFO级别以上的信息log文件的路径和前缀名

  16. google::SetLogDestination(google::GLOG_INFO, "C:\\users\\xxxx\\documents\\logdir\\INFO_");

  17.  
  18. // 设置WARNING级别以上的信息log文件的路径和前缀名

  19. google::SetLogDestination(google::GLOG_WARNING, "C:\\users\\xxxx\\documents\\logdir\\WARNING_");

  20.  
  21. // 设置ERROR级别以上的信息log文件的路径和前缀名

  22. google::SetLogDestination(google::GLOG_ERROR, "C:\\users\\xxxx\\documents\\logdir\\ERROR_");

  23.  
  24. FLAGS_colorlogtostderr = true; // 开启终端颜色区分

  25.  
  26. LOG(INFO) << "This is my first glog INFO "; // 像C++标准流一样去使用就可以了,把这条信息定义为INFO级别

  27. LOG(WARNING) << "This is my first glog WARNING"; // 像C++标准流一样去使用就可以了,把这条信息定义为WARNING级别

  28. LOG(ERROR) << "This is my first glog ERROR"; // 像C++标准流一样去使用就可以了,把这条信息定义为ERROR级别

  29.  
  30. google::ShutdownGoogleLogging(); // 全局关闭glog

  31. return 0;

  32. }

  33.  

2)在你设置的目录下便可以看到log文件了

  • INFO_:存储了INFO及INFO级别以上的日志信息
  • WARNING_:存储了WARNING及WARNING级别以上的日志信息
  • ERROR_:存储了ERROR及ERROR级别以上的日志信息

番外

如果你的程序中包含了windows.h头文件,则需要做一些额外的工作,

在#include <glog/logging.h>之前,#define  GLOG_NO_ABBREVIATED_SEVERITIES

 
  1. #define GLOG_NO_ABBREVIATED_SEVERITIES

  2. #include "glog/logging.h"

如果你使用的是glog静态库

一定要#define GOOGLE_GLOG_DLL_DECL

 
  1. #define GOOGLE_GLOG_DLL_DECL

  2. #define GLOG_NO_ABBREVIATED_SEVERITIES

  3. #include "glog/logging.h"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值