qt日志实现

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: qt的日志模块应用
qt的日志有四个级别:
    qDebug:    调试信息
    qWarning:    警告信息
    qCritical:    严重错误
    qFatal:    致命错误
可以通过<QtGlobal>下的
    void    qCritical ( const char * msg, ... );
    void    qDebug ( const char * msg, ... );
    void    qFatal ( const char * msg, ... );
    void    qWarning ( const char * msg, ... );
或include <QtDebug>时,采用更便捷输出
    qDebug()<<"debug";
    qWarning()<<"warning";
    qCritical()<<"critical";
在程序调试中这样的line printf输出没问题,如果app被部署后需要将这些输出的日志输出到日志文件中,需通过
QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )设置输出,如果想取消输出可通过qInstallMsgHandler(0)设置

qt日志输出示例:
void logMsgHandler(QtMsgType type, const char *msg)
{
    QString strLog;
    switch (type) {
        case QtDebugMsg:
            strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Debug] %1").arg(QObject::tr(msg));
            break;
        case QtWarningMsg:
            strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Warn] %1").arg(QObject::tr(msg));
            break;
        case QtCriticalMsg:
            strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Critical] %1").arg(QObject::tr(msg));
            break;
        case QtFatalMsg:
            strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Fatal] %1").arg(QObject::tr(msg));
            // abort();
        default:
            break;
    }
    //更复杂的写入文件按实际需求设置
    QFile outFile("debug.log");
    outFile.open(QIODevice::WriteOnly | QIODevice::Append);

    /**< the max size of log.txt.*/
    if(outFile.size()>10000)
    {
        outFile.close();
        //清空旧日志
        outFile.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Truncate);
        outFile.close();
        outFile.open(QIODevice::WriteOnly | QIODevice::Append);
    }

    QTextStream ts(&outFile);
    ts << strLog << endl;
};
#include <QDebug>
 int main(int argc, char **argv)
 {
     qInstallMsgHandler(myMessageOutput);
     QApplication app(argc, argv);
    //打印日志到文件中
    qDebug("debug");
    qWarning("warning");
    qCritical("critical");
    qFatal("fatal");
    
    qDebug()<<"debug_";
    qWarning()<<"warning_";
    qCritical()<<"critical_";
    
     return app.exec();
 }
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
QT软件开发: QPlainTextEdit当做日志显示窗口
QT软件开发: QPlainTextEdit当做日志显示窗口
777 0
QT软件开发: QPlainTextEdit当做日志显示窗口
|
7月前
|
C++
QT实现一个简单的日志打印系统
QT实现一个简单的日志打印系统
251 0
|
开发工具 git C++
Qt的简易日志库实现及封装
Qt的简易日志库实现及封装
|
Windows
Qt安装消息处理qInstallMessageHandler输出详细日志
Qt安装消息处理qInstallMessageHandler输出详细日志
463 0
|
Java C++
Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试
上一篇使用QtWebApp的基于Qt的轻量级http服务器实现了一个静态网页返回的Demo,网页服务器很重要的就是日志,因为在服务器类上并没有直接返回,所以,本篇先把日志加上。
QT应用编程: QDebug输出重定向到日志文件
QT应用编程: QDebug输出重定向到日志文件
608 0
|
Windows
Qt日志库Log4Qt的使用,支持文件名/行号/函数名的log打印输出
Qt日志库Log4Qt的使用,支持文件名/行号/函数名的log打印输出
1514 0
|
IDE 开发工具 C++
Qt日志重定向qInstallMessageHandler,输出Log至文件及网络
Qt日志重定向qInstallMessageHandler,输出Log至文件及网络
1026 0