wordpress創(chuàng)建搜索頁面天津海外seo
//Qt5開始提供了日志上下文信息輸出,比如輸出當前打印消息所在的代碼文件、行號、函數(shù)名等。
//如果是release還需要在pro中加上 DEFINES += QT_MESSAGELOGCONTEXT 才能輸出上下文,默認release關閉的。
//切記不要在日志鉤子函數(shù)中再寫qdebug之類的,那樣就死循環(huán)了。
//日志重定向一般就三種處理
//1: 輸出到日志文件比如txt文本文件。
//2: 存儲到數(shù)據(jù)庫,可以分類存儲,以便相關人員查詢分析。
//3: 重定向到網(wǎng)絡,對方用小工具連接程序后,所有打印信息通過tcp發(fā)過去。//日志重定向
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
void Log(QtMsgType type, const QMessageLogContext &context, const QString &msg)
#else
void Log(QtMsgType type, const char *msg)
#endif
{//加鎖,防止多線程中qdebug太頻繁導致崩潰static QMutex mutex;QMutexLocker locker(&mutex);QString content;//這里可以根據(jù)不同的類型加上不同的頭部用于區(qū)分switch (type) {case QtDebugMsg:content = QString("%1").arg(msg);break;case QtWarningMsg:content = QString("%1").arg(msg);break;case QtCriticalMsg:content = QString("%1").arg(msg);break;case QtFatalMsg:content = QString("%1").arg(msg);break;}//加上打印代碼所在代碼文件、行號、函數(shù)名
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))if (SaveLog::Instance()->getUseContext()) {int line = context.line;QString file = context.file;QString function = context.function;if (line > 0) {content = QString("行號: %1 文件: %2 函數(shù): %3\n%4").arg(line).arg(file).arg(function).arg(content);}}
#endif//將內(nèi)容傳給函數(shù)進行處理SaveLog::Instance()->save(content);
}//安裝日志鉤子,輸出調(diào)試信息到文件,便于調(diào)試
void SaveLog::start()
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))qInstallMessageHandler(Log);
#elseqInstallMsgHandler(Log);
#endif
}//卸載日志鉤子
void SaveLog::stop()
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))qInstallMessageHandler(0);
#elseqInstallMsgHandler(0);
#endif
}
推薦一個零聲學院項目課,個人覺得老師講得不錯,分享給大家:
零聲白金學習卡(含基礎架構(gòu)/高性能存儲/golang云原生/音視頻/Linux內(nèi)核)
https://xxetb.xet.tech/s/VsFMs