目录
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()宏用作一个输出流。文章来源:https://www.toymoban.com/news/detail-613400.html
4、打印日志,如何使用
qDebug() << __LINE__ << __FUNCTION__ << "删除日志:" << rmFileName;
自动就会把当前要输出的日志内容,写到重定向的文件里面。文章来源地址https://www.toymoban.com/news/detail-613400.html
到了这里,关于QT:qInstallMessageHandler打印日志重定向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!