QT调用glog日志流程

这篇具有很好参考价值的文章主要介绍了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日志流程,QT,qt,glog

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

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

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

用vs打开

QT调用glog日志流程,QT,qt,glog

Release目录生成如下:

QT调用glog日志流程,QT,qt,glog

头文件目录在glog中

QT调用glog日志流程,QT,qt,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;
}

报错了

QT调用glog日志流程,QT,qt,glog

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

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

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

再次编译:

QT调用glog日志流程,QT,qt,glog

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

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

QT调用glog日志流程,QT,qt,glog

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

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

再次点成

QT调用glog日志流程,QT,qt,glog

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

QT调用glog日志流程,QT,qt,glog

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

编译报错

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文章来源地址https://www.toymoban.com/news/detail-519053.html

到了这里,关于QT调用glog日志流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt调试详细日志文件输出

    qInstallMessageHandle 安装消息,注册 回调函数 ,对qDebug()、 qWarning()、qCritial()、qInfo()、qFatal()  等函数输出信息重定向处理。 注明 :以下方法仅适用于 Qt5 及以上版本 。 目的 :生成log.txt日志文件,记录详细日志信息(包括等级、所在文件、所在行号、描述信息、产生时间等)

    2024年02月09日
    浏览(35)
  • Log4Qt日志框架(1)- 引入到QT中

    Log4Qt日志框架(2)-深入分析和使用 github:https://github.com/MEONMedical/Log4Qt 官方(版本较老):https://sourceforge.net/projects/log4qt/ CSDN(0积分):https://download.csdn.net/download/qq_40666149/88233421 Log4Qt 是一个基于 Qt 的日志库,它是 Apache log4j 的一个移植版本。Log4Qt 旨在为 Qt 应用程序提供一个

    2024年02月11日
    浏览(39)
  • 【QT】——QT中HTTP通信的使用流程

    目录 基本概念 1.QNetworkAccessManager 常用的公共成员函数 信号  2.QNetworkRequest ——HTTP请求 3.QNetworkReply——HTTP响应 HTTP通信流程 Qt中的HTTP通信访问 API 是围绕 QNetworkAccessManager 对象构建的, 该对象保存它发送的请求的通用配置和设置 ,一个 QNetworkAccessManager 实例应该足以满足整

    2024年02月15日
    浏览(29)
  • QT:qInstallMessageHandler打印日志重定向

    目录 1、qInstallMessageHandler含义 2、实例: 3、调试级别Q包含用于警告和调试文本的全局宏: 4、打印日志,如何使用 1、qInstallMessageHandler含义 (1)此函数在使用Qt消息处理程序之前已定义。返回一个指向前一个消息处理程序。 (2)消息处理程序是一个函数,用于打印qDebug,qWa

    2024年02月15日
    浏览(45)
  • Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022

    原文链接:https://blog.csdn.net/gongjianbo1992/article/details/108030391 相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等。 在 Qt4 中使用 qInstallMsgHandler 函数设置重定向的函数指针: 在 Qt5 中应该使用 qInstallMessageHandler 来注册函

    2024年02月08日
    浏览(42)
  • Qt调用Opencv

    使用Qt Creator调用opencv 本案例使用Visual Studio 2015+Opencv4.6.0+Qt Creator 5.9.1 一、构建套件 在构建套件之前,需正确安装Visual Studio、 Opencv和WindowsSDK ,可参考 博客1 、 博客2 当正确安装后,一般情况下,在Qt Creator会自动识别到VS的编译器和调试器,并会自动构建好。若调试器未能自

    2024年02月08日
    浏览(37)
  • Qt for Android代码中输出日志

    如上,加入头文件(注意:这里的头文件是QtDebug,不是QDebug,也不知道啥时候改的,也不知道有啥区别,先这样吧)后使用qInfo来输出日志,用qDebug()输出不了(妈的。。浪费老子好长时间。。一种植物)。USB线连上自己的手机后,Qt Creator里点击运行,Qt Creator底下的“应用程

    2024年02月06日
    浏览(45)
  • Qt调用主界面ui

    在其他类中使用主界面ui,this,控件操作等 首先,子类需要包含主界面的头文件和ui_xx.h文件,声明主界面类 然后使用构造函数把主界面的指针传递给子类 子类头文件: 子类cpp文件: 主界面头文件设置ui为公有: 主界面cpp文件设置: 效果图:

    2024年02月02日
    浏览(54)
  • Qt调用Python详细过程

      本文福利, 莬 费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击 莬 费领取↓↓ 编写Python代码,

    2023年04月11日
    浏览(44)
  • Qt6之vc调用qt生成的带ui的dll

    受益于跨平台的特性,Qt生成dll的各种语言调用上体现的淋漓尽致,上篇已经演示了qt生成的无ui的dll及vc如何调用它,本篇将演示vc如何调用qt生成的带ui的dll。 传统观点认为Qt生成的带ui的dll受限于 QApplication 的 exec 方法,这样才能产生消息循环于是只能采用QTWinmigrate中重写

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包