《完美Qt》之qInstallMessageHandler

1 背景

在自己项目中,之前写好了几个模块,用了很多的qDebug()打印信息,后面项目经理要求有日志输出,以便以后出现问题方便调试,百度查了下,很容易得到自己想要的。。

2 介绍

用qInstallMessageHandler()这个全局函数就可以把qDebug(), qWarning()输出重定向的日志文件中,这个函数需要传个参数,实际就是一个回调函数,格式如下`void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg),type:消息等级, context包括:文件,行号,函数名等, msg:qDebug()时传递的参数。

3 实现

在myMessageOutput()函数中的步骤如下
1. 在当前路径下创建日志目录
2. 根据日期创建日志文件
3. 保留七天的日志文件
4. 拼接消息内容:msg+函数名+文件路径+行号
5. 文本流输入到日志文件

    #include <QApplication>
    #include <stdio.h>
    #include <stdlib.h>
    #include <QDebug>
    #include <QFile>
    #include <QFileInfo>
    #define LOG_FILE_KEEP_NUM 7
    void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
    {
    //#1 create directory that name is log
    QDir dir("log");
    if (!dir.exists())
    {
         QDir dir;
         dir.mkdir("log");
    }

    //#2
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值