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

 右击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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值