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源码下载
3)解压glog-master,目录结构如下图,可以发现目录下有个CMakeLists.txt。所以接下来我们会用到cmake这个工具
glog-master目录结构
4)到cmake的官方链接《cmake下载地址》下载cmake。我选择的是<Windows win32-x86 ZIP>
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代码示例
-
// USEglog.cpp : 定义控制台应用程序的入口点。
-
//
-
#include "stdafx.h"
-
#define GOOGLE_GLOG_DLL_DECL // 由于我们使用的glog的静态库,一定要定义这个宏
-
#include "glog/logging.h"
-
int main(int argc, char* argv[])
-
{
-
google::InitGoogleLogging(argv[0]); // 全局初始化glog
-
google::SetStderrLogging(google::INFO); // 设置glog的输出级别,这里的含义是输出INFO级别以上的信息
-
LOG(INFO) << "This is my first glog INFO "; // 像C++标准流一样去使用就可以了,这时把这条信息定义为INFO级别
-
google::ShutdownGoogleLogging(); // 全局关闭glog
-
return 0;
-
}
输出如下图
那我们这做的和cout << xxxx 有区别呢?是的没啥区别,我就是在坑大家!!!!开个玩笑,看接下来的配置
修改glog的一些设置
1)修改我们样例程序的代码
-
// USEglog.cpp : 定义控制台应用程序的入口点。
-
//
-
#include "stdafx.h"
-
#define GOOGLE_GLOG_DLL_DECL // 由于我们使用的glog的静态库,一定要定义这个宏
-
#include "glog/logging.h"
-
int main(int argc, char* argv[])
-
{
-
google::InitGoogleLogging(argv[0]); // 全局初始化glog
-
google::SetStderrLogging(google::WARNING); // 设置glog的输出级别,这里的含义是输出WARNING级别以上的信息
-
LOG(INFO) << "This is my first glog INFO "; // 像C++标准流一样去使用就可以了,把这条信息定义为INFO级别
-
LOG(WARNING) << "This is my first glog WARNING"; // 像C++标准流一样去使用就可以了,把这条信息定义为WARNING级别
-
LOG(ERROR) << "This is my first glog ERROR"; // 像C++标准流一样去使用就可以了,把这条信息定义为ERROR级别
-
google::ShutdownGoogleLogging(); // 全局关闭glog
-
return 0;
-
}
2)输出如下,可以看到WARNING和ERROR级别的信息,
3)但是INFO级别的信息我们没有看到,这是因为我在代码中有这么一行设置。
google::SetStderrLogging(google::WARNING); // 设置glog的输出级别,这里的含义是输出WARNING级别以上的信息
glog一共有4个级别的信息可以定义
- INFO
- WARNING
- ERROR
- FATAL(这个级别的输出会导致程序强制中断)
4)增加一行代码,可以在终端区分颜色
FLAGS_colorlogtostderr = true; // 开启终端颜色区分
将glog日志信息写入到磁盘log文件中
1)修改样例程序代码如下
-
// USEglog.cpp : 定义控制台应用程序的入口点。
-
//
-
#include "stdafx.h"
-
#define GOOGLE_GLOG_DLL_DECL // 由于我们使用的glog的静态库,一定要定义这个宏
-
#include "glog/logging.h"
-
int main(int argc, char* argv[])
-
{
-
google::InitGoogleLogging(argv[0]); // 全局初始化glog
-
google::SetStderrLogging(google::GLOG_INFO); // 设置glog的输出级别,这里的含义是输出INFO级别以上的信息
-
// 设置INFO级别以上的信息log文件的路径和前缀名
-
google::SetLogDestination(google::GLOG_INFO, "C:\\users\\xxxx\\documents\\logdir\\INFO_");
-
// 设置WARNING级别以上的信息log文件的路径和前缀名
-
google::SetLogDestination(google::GLOG_WARNING, "C:\\users\\xxxx\\documents\\logdir\\WARNING_");
-
// 设置ERROR级别以上的信息log文件的路径和前缀名
-
google::SetLogDestination(google::GLOG_ERROR, "C:\\users\\xxxx\\documents\\logdir\\ERROR_");
-
FLAGS_colorlogtostderr = true; // 开启终端颜色区分
-
LOG(INFO) << "This is my first glog INFO "; // 像C++标准流一样去使用就可以了,把这条信息定义为INFO级别
-
LOG(WARNING) << "This is my first glog WARNING"; // 像C++标准流一样去使用就可以了,把这条信息定义为WARNING级别
-
LOG(ERROR) << "This is my first glog ERROR"; // 像C++标准流一样去使用就可以了,把这条信息定义为ERROR级别
-
google::ShutdownGoogleLogging(); // 全局关闭glog
-
return 0;
-
}
2)在你设置的目录下便可以看到log文件了
- INFO_:存储了INFO及INFO级别以上的日志信息
- WARNING_:存储了WARNING及WARNING级别以上的日志信息
- ERROR_:存储了ERROR及ERROR级别以上的日志信息
番外
如果你的程序中包含了windows.h头文件,则需要做一些额外的工作,
在#include <glog/logging.h>之前,#define GLOG_NO_ABBREVIATED_SEVERITIES
-
#define GLOG_NO_ABBREVIATED_SEVERITIES
-
#include "glog/logging.h"
如果你使用的是glog静态库
一定要#define GOOGLE_GLOG_DLL_DECL
-
#define GOOGLE_GLOG_DLL_DECL
-
#define GLOG_NO_ABBREVIATED_SEVERITIES
-
#include "glog/logging.h"