分享

Qt的系统日志记录

 ylsnData 2018-04-02
前言:消息的基本分类
qDebug : 调试信息提示
qWarning: 一般的警告提示
qCritical: 严重错误提示
qFatal: 致命错误提示
一:日志记录的思路
   首先截获Qt的信息输出内容, 新建一个文件,每次当有信息需要输出时,则先得到当前的时间信息,再和要输出的信息一起追加到日志文件中。这样便可以监视程序的运行状态,找到程序出错的原因了。
二:截获Qt的日志输出
 (1),在主函数中安装消息处理函数:qInstallMsgHandler(messageOutput); //messageOutput为函数名
(2),在messageOutput函数中对消息进行分类
​实例:
//第一步,安装消息处理函数
​int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qInstallMsgHandler(messageOutput); //安装消息处理函数
    QFont font;
    font.setPointSize(16);
    font.setFamily(("wqy-zenhei"));
    a.setFont(font);
    //InputContext *ic = new InputContext;
    //a.setInputContext(ic);
    //中文支持
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
    MainWindow w; //项目
    w.show();
    return a.exec();
}

//第二步对消息进行分类处理
​//对消息进行分类,并且调用存储函数
void messageOutput(QtMsgType type, const char *msg)
{
    QString txt;
    //对信息进行分类
    switch (type)
    {
    //调试信息提示
    case QtDebugMsg:
        txt = QString("Debug: %1").arg(msg);
        break;
        //一般的warning提示
    case QtWarningMsg:
        txt = QString("Warning: %1").arg(msg);
        break;
        //严重错误提示
    case QtCriticalMsg:
        txt = QString("Critical: %1").arg(msg);
        break;
        //致命错误提示
    case QtFatalMsg:
        txt = QString("Fatal: %1").arg(msg);
        abort();
    }
     //将消息存储在磁盘上
saveDebugMessage(txt);
}

​//第三步,将信息添加时间信息后,存储在磁盘上
​//加上系统时间,将消息存储在磁盘上
void MainWindow::saveDebugMessage(QString msg)
{
   //得到系统的当前日期和时间
   QDate date=QDate::currentDate();
   QTime time=QTime::currentTime();
   QString systemInfo=QString("%1/%2 %3:%4:%5  ").arg(date.month(),2,10,QChar('0')).arg(date.day(),2,10,QChar('0')).arg(time.hour(),2,10,QChar('0')).arg(time.minute(),2,10,QChar('0')).arg(time.second(),2,10,QChar('0'))+" "+QString::number(time.msec())+" ";
   //追加上信息
   systemInfo.append(msg);
   //打开系统的日志文件
   QFile file("../mainDebug");
   if(file.open(QFile::Append|QIODevice::Text)) //以追加和文本的方式打开日志文件
   {
       //打开文件成功,写入信息
       QTextStream out(&file);
       out<<systemInfo<<"\r\n";
   }
   else
   {
   }
   file.close();
​}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多