glog日志库是Google开源的轻量级的日志库,平时在开发过程中经常要使用到日志,本篇记录Qt项目使用glog日志库的记录。
1.首先下载cmake,Download | CMake
安装设置环境变量,检查安装情况
2.下载glog源码
git clone https://github.com/google/glog.git
github网站比较慢,而且容易断线,可以用国内的境像
git clone https://gitee.com/orig/glog.git
切换到glog源码目录,创建build目录,切换到build目录
cd glog
mkdir build
cd build/
cmake .. (两点前后有空格)这个命令生成vs的解决方案工程。
右击All_BUILD生成,这时会生成glog.dll
上面是默认生成32位的,这里要生成64位的动态库,需要执行
cmake -G "Visual Studio 15 2017 Win64" .. (两点前后有空格)
用vs打开
Release目录生成如下:
头文件目录在glog中
使用glog.dll
创建一个工程,添加代码
#include <logging.h>
#ifndef GLOG_NO_ABBREVIATED_SEVERITIES
#define GLOG_NO_ABBREVIATED_SEVERITIES // 如果不加这个宏定义代码就会报错
#endif
#ifdef WIN64
#pragma comment(lib, "glog.lib")
#endif
int main(int argc, char *argv[])
{
//设置日志文件路径
QString logPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/logs" ;
QDir logPathDir(logPath);
if(!logPathDir.exists()){
QDir().mkpath(logPathDir.absolutePath());
}
QString strTime = QDateTime::currentDateTime().toString("yyyy-MM-dd_hh_mm_ss");
logPath = logPath + "/"+ strTime + ".log";
std::string glogFile = logPath.toStdString();
FLAGS_alsologtostderr = true;//是否将日志输出到文件和stderr
google::InitGoogleLogging(glogFile.c_str());//使用glog之前必须先初始化库,仅需执行一次,括号内为程序名
LOG(INFO) << "Hello,GLOG!";
//======================================
//google::InitGoogleLogging("test");//使用glog之前必须先初始化库,仅需执行一次,括号内为程序名
//FLAGS_alsologtostderr = true;//是否将日志输出到文件和stderr
//FLAGS_colorlogtostderr = true;//是否启用不同颜色显示
//google::SetLogFilenameExtension(".log"); //设置文件扩展名
//google::SetLogDestination(google::GLOG_INFO, "E:\\logs\\INFO_");//INFO级别的日志都存放到logs目录下且前缀为INFO_
//google::SetLogDestination(google::GLOG_WARNING, "E:\\logs\\WARNING_");//WARNING级别的日志都存放到logs目录下且前缀为WARNING_
//google::SetLogDestination(google::GLOG_ERROR, "E:\\logs\\ERROR_"); //ERROR级别的日志都存放到logs目录下且前缀为ERROR_
//google::SetLogDestination(google::GLOG_FATAL, "E:\\logs\\FATAL_"); //FATAL级别的日志都存放到logs目录下且前缀为FATAL_
QApplication a(argc, argv);
MainWindow w;
w.show();
int ret = a.exec();
google::ShutdownGoogleLogging();//当要结束glog时必须关闭库,否则会内存溢出
return ret;
}
报错了
原因是加载头文件时,采用这个方式
#include “logging.h”
改为
#include <glog/logging.h>
因为logging.h文件里也包含其他头文件,而且都加前缀目录glog
例如:
#include <glog/platform.h>
所以在pro工程里添加目录时不用加glog目录,
再次编译:
提示没有platform.h头文件,从glog目录里取的文件有5个,确实没有platform.h头文件。
这里要要右击INSTALL项目,安装,会把头文件和动态库输出到安装目录。
默认安装在C:\Program Files\glog目录下,而且有权限的问题,边把把VS用管理员权限打开,
然后在C:\Program Files\glog目录下创建lib目录。
再次点成
打开include/glog目录,里面有7个文件
把这几个文件复制到工程对应的文件目录下
编译报错
LINK : fatal error LNK1104: 无法打开文件“glog.lib”
#ifdef WIN64
#pragma comment(lib, "glog.lib")
#endif
动态库路径一定要对上
LIBS += -L$$PWD/../bin/win64 -lglog
参考:
https://blog.csdn.net/didi_ya/article/details/123029601
https://blog.csdn.net/didi_ya/article/details/123030706