Qt自带的日志框架

2023-11-19

描述:Qt中使用Qt::qInstallMessageHandler()注册日志消息
日志级别:

  • qDebug:调试信息
  • qWarning:警告信息
  • qCritical:严重错误
  • qFatal:致命错误

代码实现

void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    static QMutex mutex;

    QMutexLocker locker(&mutex);
    QString strLogPath = Utils::getLogPath();

    QString context_info = QString("File:(%1) Function:(%2) Line:(%3)").arg(QString(context.file)).arg(QString(context.function)).arg(context.line);
    QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
    QString text;
    switch(type)
    {
    case QtDebugMsg:
        text = QString("Debug");
        break;

    case QtInfoMsg:
        text = QString("Info");
        break;

    case QtWarningMsg:
        text = QString("Warning");
        break;

    case QtCriticalMsg:
        text = QString("Error");
        break;
    case QtFatalMsg:
        text = QString("Fatal");
        break;
    default:
        break;
    }
    QString message = QString("[%1][%2][%3]%4 %5").arg(current_date_time).arg(text).arg(qlonglong(QThread::currentThreadId())).arg(context_info).arg(msg);

    static QString strFileName = strLogPath + "/" + QDateTime::currentDateTime().toString("log_yyyyMMddhhmmss.log");
    QFile file(strFileName);
    file.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream text_stream(&file);
    text_stream << message << "\r\n";
    file.close();
    }
    
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    //注册MessageHandler
    qInstallMessageHandler(outputMessage);
    return app.exec();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt自带的日志框架 的相关文章

  • cx_freeze:QODBC 驱动程序未加载

    我的 python 应用程序如下所示 test py from PyQt4 import QtCore from PyQt4 import QtGui from PyQt4 import QtSql import sys import at
  • 安装多个版本的 Qt 库

    我在windows中安装了QtSDK 它的Qt库版本是4 7 0 现在我想为 mingw 和 VS2008 安装 Qt 库版本 4 8 2 我怎样才能做到这一点 如何向QtCreator引入多个版本 注意 我已经从以下位置下载了库http
  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 仅将非模态 QDialog 窗口放置在我的应用程序顶部,而不是所有应用程序顶部

    我有一个 QDialog 窗口 它应该始终位于我的应用程序顶部 它不是模态的 用户可以随时与对话框和主应用程序进行交互 使用窗口保持在顶部提示在某种程度上实现了这一点 但是 该对话框仍然位于所有其他正在运行的应用程序 例如记事本 chrom
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • Qt mouseReleaseEvent() 未触发?

    我有一个显示图片的库 我们称之为 PictureGLWidget 其中 class PictureGLWidget public QGLWidget 所以 PictureGLWidget 扩展了 QGLWidget 在PictureGlWi
  • QtCreator 调试暂停停在代码而不是汇编处

    如何配置 QtCreator 以便在调试并按下暂停时它会显示当前正在处理的代码 现在显示汇编 无法在任何地方找到有关此问题的答案 我使用的是 Windows 7 我在 Ubuntu 16 04 中使用 Qt Creator 4 2 2 时遇
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • Qt - 如何粘合两个窗口并将它们移动在一起?

    就像qmmp Qt 音乐播放器ui设计一样 这两个或三个窗口实际上在同一个窗口中 因为只有一个dock图标 并且这些窗口可以一起移动并相互附着 我看了源码 好像有用QDockWidget 但我真的不知道如何获得它的细节 当您手动移动辅助窗口
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • 如何检测QTableView中的双击

    我正在使用 PyQt 创建 GUI 应用程序 在继承自 QTableView 的视图中 需要检测用户双击行时选择的行 该表可以排序 但不能编辑 我该怎么做 注意 尝试了 doubleClicked int 信号 它是由鼠标按钮发出的 而不是
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因

随机推荐

  • osgEarth的Rex引擎原理分析(二)osg是如何根据文件扩展名寻找需要加载的动态链接库插件的

    在 一 中有createLibraryNameForFile 它会根据文件扩展名构造需要加载的动态链接库 osgDB Registry cpp ReaderWriter ReadResult Registry read const Read
  • JVM远程调试功能开启,与原理

    前言 以前有篇文章 讲解Tomcat开启远程调试功能 只是讲解了用法 以及Tomcat的作者书写脚本的初衷 原理没写 其实不是Tomcat的具有远程调试功能 是JVM虚拟机提供的能力 Java应用都能开启远程调试能力 上一篇文章 tomca
  • 程序“catkin_init_workspace”尚未安装。 您可以使用以下命令安装: sudo apt install catkin

    程序 catkin init workspace 尚未安装 您可以使用以下命令安装 sudo apt install catkin 问题如图 先贴上解决后的效果 运行环境 ubuntu 16 04 ros版本 kinetic 问题解释 这个
  • MATLAB上使用FasterRcnn实现目标(温湿度计)检测

    本文硬件环境是 win7 64位 MATLAB R2018a 由于第一次接触目标检测 很多东西只是照猫画虎 不甚了解 将自己成功的测试流程记录如下 方便和自己有同样需求的人拿来就用 减少学习过程中的不必要的困难 主要参照资料1和4中的方法
  • TCP连接阻塞的监控和处理

    TCP连接阻塞的监控和处理 那么 什么样的TCP连接属于上述发生阻塞的异常连接呢 结合线上运维经验 我们整理出符合该类异常的特征如下 该连接的Recv Q的值特别大 超过3M 该连接的Recv Q的值持续上涨 造成堆积 在一定滑动时间窗口内
  • 一、MM Segmentation 介绍与安装

    时间 2022年4月1日 内容 学习MM Segmentation MM Segmentation 介绍和理解 MM Segmentation 利用注册器和配置文件 实现了 可拓展性 和 易用性 它是一个封装了许多语义分割深度神经网络的框架
  • solidity经典案例----智能小游戏

    参考于https ke qq com webcourse 2379017 103111126 taid 10365401060101385 vid 5285890802017890711 1 案例功能介绍 平台方部署智能合约 用户选择下大或
  • pytorch.onnx.export方法参数详解,以及onnxruntime-gpu推理性能测试

    Torch onnx export执行流程 1 如果输入到torch onnx export的模型是nn Module类型 则默认会将模型使用torch jit trace转换为ScriptModule 2 使用args参数和torch j
  • C++ 拷贝构造函数的用法

    当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候 拷贝构造函数就会被自动调用 也就是说 当类的对象需要拷贝时 拷贝构造函数将会被调用 以下情况都会调用拷贝构造函数 一个对象以值传递的方式传入函数体 一个对象以值传递的方
  • 服务器命令使用

    服务器命令使用 一 常用命令 二 实际经常使用的命令 1 ls 列出目录内容 2 unzip 7z x 解压文件夹命令 一级目录 一级目录 一级目录 一 常用命令 ls 列出目录内容 cd 切换目录 pwd 显示当前工作目录的路径 mkdi
  • Nginx反向代理(负载均衡)和作为web服务器的使用

    一 安装启动Nginx 1 官网下载 URL http nginx org en download html 解压后如下 2 启动nginx有很多种方法启动nginx 1 直接双击nginx exe 双击后一个黑色的弹窗一闪而过 或者点击右
  • 我怎样一步一步引导ChatGPT写完一篇本科毕业论文

    先了解毕业论文相关专家 给ChatGPT指定一个角色 我给ChatGPT指定一个学术导师角色 好家伙 给我谦虚起来了 好 换个方式 他开始听话了 了解论文格式 计算机科学与技术专业论文一般有哪些部分组成 选题 了解方向 请先告诉我计算机科学
  • VUE-CLI学习第七天

    VUE CLI学习第七天 vue vuex学习 vuex结构 引入vuex vuex的使用 state mutation action modules getters 对象解构 vuex模块封装 vue vuex学习 vuex结构 src
  • Python爬虫分析CSDN个人博客数据

    前言 到周末了 产生一个idea 就是获取个人的全部博客标题及链接 发布时间 浏览量 以及收藏量等数据信息 按访问量排序 整理成一份Excel表存储 使用时 输入个人博客ID即可 从数据获取到解析存储 用到requests Beautifu
  • Hystrix-Dashboard介绍+案例+图分析

    测试中使用到的代码到在这里https download csdn net download zhou920786312 10853300 Hystrix Dashboard介绍 实时监控Hystrix的各项指标信息 是Hystrix的仪表盘
  • 使用Pytorch框架

    文章目录 Python深度学习神经网络的API pytorch简介 pytorch安装 GPU和CPU 张量 1 基本概念 2 图像作为输入 3 张量的创建方式 弄好一个numpy数组后 利用它有四种方式创建张量 没有预先确定数据 生成默认
  • a标签设置下载设置文件名,并且设置无效的解决方法

    设置 a 标签的 download属性 可以重置 文件名 如下代码 文件名重置为 file xlsx a href http 192 168 1 1 abcd xlsx 下载 a 这种写法有个前提 href 的下载地址 和 当前网站地址 必
  • SQL中ALL、Any、Some的区别

    SQL语句中存在3个著名的量词 some all 和 any All 只有当其所有数据都满足条件时 条件才成立 Any 只要有一条数据满足条件 条件就成立 Some 其中存在一些数据满足条件 作用和Any大致相同 常规的使用中看作一致即可
  • 来这里读懂英文!!!认清楚API !!!

    API Aplication Programming Interface 应用程序接口 直接的说 API就好比是一个信使 发送请求 告诉系统你想要做什么 然后把结果告诉你 再或者说 不论何时想到API 都应当把它想象成为餐馆的服务生 奔波于
  • Qt自带的日志框架

    描述 Qt中使用Qt qInstallMessageHandler 注册日志消息 日志级别 qDebug 调试信息 qWarning 警告信息 qCritical 严重错误 qFatal 致命错误 代码实现 void outputMessa