QT qDebug()ファイルに印刷

1842 ワード


 
  • デバグモードで行番号、ファイルを取得できるようにテストされました.releaseモードでは取得できません.

  •  
     
    #include 
    #include 
    #include 
    
    void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
    {
        //  
        static QMutex mutex;
        mutex.lock();
    
        QByteArray localMsg = msg.toLocal8Bit();
    
        QString strMsg("");
        switch(type)
        {
        case QtDebugMsg:
            // 
            strMsg = QString("Debug:");
            break;
        case QtWarningMsg:
            // 
            strMsg = QString("Warning:");
            break;
        case QtCriticalMsg:
            // 
            strMsg = QString("Critical:");
            break;
        case QtFatalMsg:
            // 
            strMsg = QString("Fatal:");
            break;
        }
    
        //  
        QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
        QString strMessage = QString("DateTime:%1 Message:%2 File:%3  "
                                     "Line:%4  Function:%5 ")
                .arg(strDateTime).arg(localMsg.constData()).arg(context.file)
                .arg(context.line).arg(context.function);
    
        //  ( 、 )
    
        QString  MyLogFilePath = “D:\” ;
        MyLogFilePath += "log.txt";
        QFile file(MyLogFilePath);
        file.open(QIODevice::ReadWrite | QIODevice::Append);
        QTextStream stream(&file);
        stream << strMessage << "\r
    "; file.flush(); file.close(); // mutex.unlock(); } int main(int argc, char *argv[]) { // qInstallMessageHandler(myMessageOutput); QApplication a(argc, argv); a.setStyle("plastique"); Widget w; w.show(); return a.exec(); }