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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34296.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JMeter录制HTTPS脚本解决办法

目录 前言&#xff1a; 背景 解决方法 前言&#xff1a; 在使用JMeter录制HTTPS脚本时&#xff0c;可能会遇到一些问题&#xff0c;例如SSL证书错误或请求失败等。解决这些问题的一种常见的方法是通过安装并信任服务器的SSL证书来解决。 背景 在对某项目进行脚本录制的时…

Django框架-5

路由系统 通过URL&#xff08;Uniform Resource Locator&#xff0c;统一资源定位符&#xff09;可以访问互联网上的资源——用户通过 浏览器向指定URL发起请求&#xff0c;Web服务器接收请求并返回用户请求的资源&#xff0c;因此可以将URL视为用户与服务器之间交互的桥梁。 …

Scrapy框架之MongoDB通过配置文件管理参数--Linux安装MongoDB--图形管理工具

目录 MongoDB通过配置文件 问题 解决方案 步骤 提示 Linux安装MongoDB 环境 下载依赖与安装包 解压安装 MongoDB GUI管理工具 独立软件GUI软件 Robo 3T使用 VSCode集成GUI插件 MongoDB通过配置文件 问题 启动MongoDB时&#xff0c;编写参数太麻烦 解决方案 通过配…

MATLAB App Designer基础教程 Matlab GUI入门(四)

坐标轴控件 axis 函数绘图方法技巧 作用&#xff1a; 绘制函数图像显示图像&#xff08;jpg png tiff&#xff09; 学习内容 App designer中 plot 和命令行中的 plot函数的不同&#xff1b;如何在坐标轴空间中显示两个函数图像&#xff1b;智能缩进 &#xff08;Ctrl I&am…

Linux——进程通信之共享内存

目录 一. 回顾上文 二.共享内存 1.定义 2.特点&#xff1a; 3.实现步骤&#xff1a; 如下为成功链接共享内存使用权的完整步骤&#xff1a; 4.函数介绍 4.1shmget函数 4.1.2参数介绍 4.2ftok函数&#xff1a; 4.2.1参数介绍 关于ftok(); shmget();函数的代码实验…

学习Kotlin~类

类 类的field 类定义的每一个属性&#xff0c;kotlin都会产生一个filed,一个setter(),一个getter()field用来存储属性数据&#xff0c;不能直接定义&#xff0c;kotlin会封装&#xff0c;保护它里面数据&#xff0c;只暴露给getter和setter使用只有可变属性才有setter方法需要…

探索 Jetson Nano 为 myCobot 280 机械臂提供的强大功能

探索 Jetson Nano 为 myCobot 280 提供的强大功能&#xff0c;机器人技术的一个有前途的组合 介绍 近年来&#xff0c;科学技术的发展给我们的生活带来了许多新的产品和服务&#xff0c;包括机器人在各个领域的集成。机器人已经成为我们生活中必不可少的一部分&#xff0c;从…

Vim 自定义配色

本文首发于我的个人博客&#xff0c;欢迎点击访问&#xff0c;无广告节面简洁&#xff01; 最近重新开始学习Vim装上了WSL2&#xff0c;但发现Windows Terminal和vim的组合还是有很多问题需要解决的&#xff0c;由其默认的配色在某些状态下根本看不清字体&#xff0c;所以折腾…

Nginx | 苹果电脑Mac安装和验证Nginx服务过程记录

common wx&#xff1a;CodingTechWork&#xff0c;一起学习进步。 引言 本文主要总结如何在Mac电脑上进行Nginx服务的安装&#xff0c;重点讲解使用brew命令进行安装和验证的过程及问题记录。 安装步骤 安装过程记录 查看nginx信息 首先使用命令brew info nginx进行本机ng…

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第七章

这一章内容有点丰富&#xff0c;多用了一些时间&#xff0c;实例就有四五个。 这章内容是真多啊&#xff01;&#xff08;学完之后又回到开头感叹&#xff09; 大脑分级处理机制&#xff1a; 将图像从基础像素到局部信息再到整体信息 即将图片由低级特征到高级特征进行逐级计…

基于群组实现从 Azure AD 到极狐GitLab 的单点登录

目录 配置单点登录 在 Azure AD 中创建企业应用 SAML 基础配置 配置 Azure “Attributes & Claims” 配置用户同步 在极狐GitLab 创建 SCIM Token 配置 Azure Provisioning Azure 手动用户预配 测试单点登录 Azure 自动用户同步 配置群组同步 配置 SAML 群组链…

打jar包

pom文件指定打包的类型是jar&#xff0c;并指定启动主类 <packaging>jar</packaging><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>…

什么条件下会出现死锁,如何避免?

文章目录 一、什么是死锁二、产生死锁的原因&#xff1a;三、如何避免死锁&#xff1a; 一、什么是死锁 死锁&#xff0c;简单来说就是两个或者两个以上的线程在执行过程中&#xff0c;去争夺同一个共享资源导致相互等待的现象。如果没有外部干预&#xff0c;线程会一直处于阻塞…

uniapp封装门票等票务样式

先看效果图 ticketpage组件引用后&#xff0c;根据父级背景颜色改变镂空的颜色,空组件只有中间镂空的样式&#xff0c;上面是插槽heaer,下面内容是插槽content&#xff0c;可以自定义自己的内容和样式。我实现的最终效果是用的uview组件&#xff0c;如果复现需要项目引入。可…

Nginx负载均衡与动静分离

一、Nginx负载均衡&#xff1a; 1.概述&#xff1a; Nginx是一款http服务器软件&#xff0c;支持高达50000个并发连接数的响应。 &#xff08;1&#xff09;拥有强大的处理静态资源的能力。 &#xff08;2&#xff09;运行稳定。 &#xff08;3&#xff09;CPU&#xff0c…

【Unity3D编辑器开发】Unity3D中初次尝试使用PropertyDrawer属性

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 前段时间一直比较忙&#xff0c;没有时间更新博客&#xff0c;…

2011年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

tomcat接入skywalking

tomcat接入skywalking 一、说明二、步骤2.1 准备java-agent包2.2 tomcat部署2.2.1 下载2.2.2 tomcat修改catalina.sh文件2.2.3 tomcat修改启动端口2.2.4 启动tomcat 三、验证四、问题排查4.1 tomcat的启动日志 一、说明 服务器中已经运行着skywalking&#xff0c;准备在同一台…

7-WebApis-5

Web APIs - 5 目标&#xff1a; 能够利用JS操作浏览器,具备利用本地存储实现学生就业表的能力 BOM操作综合案例 js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。比如&#xff1a;变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型&#xff…

2023全云在线联合微软AIGC专场沙龙:人工智能与企业创新,促进创造力的数字化转型

6月29日&#xff0c;由全云在线平台和微软联合主办的人工智能与企业创新&#xff1a;促进创造力的数字化转型——2023AIGC微软专场沙龙在广州天河区正佳万豪酒店举行。 关于2023AIGC微软专场沙龙 GPT翻开了AGI新的一页&#xff0c;也翻开了各行各业的新篇章。 2022年11月30日…