• 3964阅读
  • 0回复

[提问]qInstallMsgHandler qDebug支持多线程吗? [复制链接]

上一主题 下一主题
离线anranzhifeng
 

只看楼主 倒序阅读 楼主  发表于: 2015-05-10
— 本帖被 XChinux 从 其它技术开发讨论区 移动到本区(2015-07-28) —
QT5       qInstallMessageHandler(outputMessage);
QT4       qInstallMsgHandler(outputMessage);
请问qInstallMsgHandler qDebug输出文件支持多线程吗?

已经加锁了,为什么最终写文件还会出现message部分内容会写到其他其他行去了?
如何写才能使其按顺序将信息写入文件?

outputMessage实现如下:
void  outputMessage(QtMsgType type, const char  *msg)
{
    static QMutex LogMutex;
    LogMutex.lock();
    switch(type)
    {
        case QtDebugMsg:
            break;
        case QtWarningMsg:
            break;
        case QtCriticalMsg:
            break;
        case QtFatalMsg:
            break;
    }
    QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz");
    QString message = QString("%1|%2\r\n").arg(current_date_time).arg(msg);
        FileNameWithPath = "/home/log/22.log";
        QFile file(FileNameWithPath);
        file.open(QIODevice::WriteOnly | QIODevice::Append ); //| QIODevice::Unbuffered
        QTextStream text_stream(&file);
        text_stream << message ;
        text_stream.flush();
        file.close();
    LogMutex.unlock();
}
快速回复
限100 字节
 
上一个 下一个