zoukankan      html  css  js  c++  java
  • Qt::日志处理

     // 自定义消息处理
     qInstallMessageHandler(comfunc::myMessageOutput);
    void comfunc::myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
    {
        //修改日志消息内容
        QString logMsg = msg;
        if(logMsg.simplified().length() == 0) //过滤掉空消息
        {
            return;
        }
        if(logMsg[0] =='\"' && logMsg[logMsg.size()-1] == '\"')
        {
            logMsg = logMsg.mid(1,logMsg.length()-2);//去除消息中的冒号
        }
    
        QString logType;
        switch(type)
        {
            case QtDebugMsg:
                 logType = QString("DEBUG");
                 break;
    
            case QtInfoMsg:
                 logType = QString("INFO");
                 break;
    
            case QtWarningMsg:
                 logType = QString("WARN");
                 break;
    
            case QtCriticalMsg:
                 logType = QString("ERROR");
                 break;
    
            case QtFatalMsg:
                 logType = QString("Fatal");
                 break;
    
            default:
                 logType = QString("UNKNOWN");
                 break;
        }
    
        QString current_Date_Time = QDateTime::currentDateTime().toString("MM/dd hh:mm:ss.zzz");
    
        QString message = QString("%1|%2|%3|%4|%5\n").arg(current_Date_Time).arg(logType).arg(context.function).arg(context.line).arg(logMsg);
    
        //生成日志文件
        static QMutex mutex;    //添加互斥锁,便于在多线程情况的使用
        mutex.lock();             //加锁
        QDir::setCurrent(QCoreApplication::applicationDirPath());//设置当前目录
        static QString LogName = "./mylog.log";
        QFile file(LogName);
        if(file.size() >= 100*1024*1024)//如果日志文件超过100M,则另写一个
        {
            file.rename(LogName, LogName+QDateTime::currentDateTime().toString("_yyyyMMddhhmmss.log"));
            file.setFileName(LogName);
        }
    
        if(file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
        {
            QTextStream text_stream(&file);
            text_stream << message;
            file.flush();//将任何缓存数据刷新到文件中
            file.close();
        }
    
        mutex.unlock();    //解锁
    }
  • 相关阅读:
    WebDev.WebServer使用帮助
    [原创]通过编写PowerDesigner脚本功能批量修改属性
    Web中响应用户修改的事件
    郁闷的切换foxmail
    Java中Split函数的用法技巧
    [转].NET安装项目卸载的方法
    把你的名字刻到IE上
    JavaScript面向对象编程笔记
    附件下载直接显示另存为对话框并保存原有中文文件名的解决办法
    MyEclipse开发JSP页面假死问题解决办法
  • 原文地址:https://www.cnblogs.com/osbreak/p/14370312.html
Copyright © 2011-2022 走看看