QT调用glog日志流程

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的解决方案工程。

QT调用glog日志流程_第1张图片

 

 右击All_BUILD生成,这时会生成glog.dll

上面是默认生成32位的,这里要生成64位的动态库,需要执行

cmake -G "Visual Studio 15 2017 Win64" ..   (两点前后有空格)

用vs打开

QT调用glog日志流程_第2张图片

Release目录生成如下:

QT调用glog日志流程_第3张图片

头文件目录在glog中

QT调用glog日志流程_第4张图片

 使用glog.dll

创建一个工程,添加代码

#include 


#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;
}

报错了

QT调用glog日志流程_第5张图片

 原因是加载头文件时,采用这个方式

#include “logging.h”
改为
#include
因为logging.h文件里也包含其他头文件,而且都加前缀目录glog
例如:
#include

所以在pro工程里添加目录时不用加glog目录,

再次编译:

QT调用glog日志流程_第6张图片

 提示没有platform.h头文件,从glog目录里取的文件有5个,确实没有platform.h头文件。

这里要要右击INSTALL项目,安装,会把头文件和动态库输出到安装目录。

QT调用glog日志流程_第7张图片

 

默认安装在C:\Program Files\glog目录下,而且有权限的问题,边把把VS用管理员权限打开,

然后在C:\Program Files\glog目录下创建lib目录。

再次点成

QT调用glog日志流程_第8张图片

 打开include/glog目录,里面有7个文件

QT调用glog日志流程_第9张图片

 把这几个文件复制到工程对应的文件目录下

编译报错

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

 

你可能感兴趣的:(QT,qt,glog)