目录
1、qInstallMessageHandler含义
2、实例:
3、调试级别Q包含用于警告和调试文本的全局宏:
4、打印日志,如何使用
1、qInstallMessageHandler含义
(1)此函数在使用Qt消息处理程序之前已定义。返回一个指向前一个消息处理程序。
(2)消息处理程序是一个函数,用于打印qDebug,qWarning,qCritical和qFatal的错误消息。Qt库(调试模块)包含成百上千的警告信息,打印时(通常是无效的函数参数)发生内部错误。Qt构建在release模式下还包含一些除了QT_NO_WARNING_OUTPUT和/或QT_NO_DEBUG_OUTPUT之外的警告已经设置在编译。如果你实现自己的消息处理程序,需要完全控制这些消息。
(3)在X11或Windows下的调试器,缺省的消息处理程序向标准输出打印消息。如果这是一个致命的消息,应用程序立即中止。
(4)只有一个消息处理程序可以被定义,因为这通常是在应用程序的基础上完成控制调试输出。
(5)恢复消息处理程序,调用qInstallMessageHandler(0)。
2、实例:
static QMutex g_qmutex; // 互斥锁
QString g_LogDirPath = "/log/";void outputMessage(QtMsgType type, const QMessageLogContext& Context, const QString &data )
{if(g_qmutex.tryLock(10)==false){return;}QString msg(data);QString text;switch(static_cast<int>(type)){case QtDebugMsg:text = QString("Debug:");break;case QtWarningMsg:text = QString("Warning:");break;case QtCriticalMsg:text = QString("Critical:");break;case QtFatalMsg:text = QString("Fatal:");break;}QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");QString current_date = QString("[%1]").arg(current_date_time);QString message = QString("%1 %2 %3").arg(current_date).arg(text).arg(msg);QString file_time = QDate::currentDate().toString("yyyyMMdd");QString file_name1 = QString(g_LogDirPath+"LogTWSDNetPay%1.log").arg(file_time);QFile file(file_name1);file.open(QIODevice::WriteOnly | QIODevice::Append);QTextStream text_stream(&file);text_stream << message << "\r\n";file.flush();file.close();g_qmutex.unlock();(void)Context;
}int main(int argc, char *argv[])
{QApplication a(argc, argv);QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));MainWindow::instance();qInstallMessageHandler(outputMessage);return a.exec();
}
3、调试级别
Q包含用于警告和调试文本的全局宏:
qDebug()
调试消息qInfo()
信息消息qWarning()
警告消息和可恢复的错误qCritical()
关键错误和系统错误qFatal()
致命错误如果包含头文件<QDebug>,就可以将所述qDebug()宏用作一个输出流。
4、打印日志,如何使用
qDebug() << __LINE__ << __FUNCTION__ << "删除日志:" << rmFileName;
自动就会把当前要输出的日志内容,写到重定向的文件里面。