wordpress創(chuàng)建搜索頁面天津海外seo
//Qt5開始提供了日志上下文信息輸出,比如輸出當(dāng)前打印消息所在的代碼文件、行號(hào)、函數(shù)名等。
//如果是release還需要在pro中加上 DEFINES += QT_MESSAGELOGCONTEXT 才能輸出上下文,默認(rèn)release關(guān)閉的。
//切記不要在日志鉤子函數(shù)中再寫qdebug之類的,那樣就死循環(huán)了。
//日志重定向一般就三種處理
//1: 輸出到日志文件比如txt文本文件。
//2: 存儲(chǔ)到數(shù)據(jù)庫,可以分類存儲(chǔ),以便相關(guān)人員查詢分析。
//3: 重定向到網(wǎng)絡(luò),對(duì)方用小工具連接程序后,所有打印信息通過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太頻繁導(dǎo)致崩潰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;}//加上打印代碼所在代碼文件、行號(hào)、函數(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("行號(hào): %1 文件: %2 函數(shù): %3\n%4").arg(line).arg(file).arg(function).arg(content);}}
#endif//將內(nèi)容傳給函數(shù)進(jìn)行處理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è)零聲學(xué)院項(xiàng)目課,個(gè)人覺得老師講得不錯(cuò),分享給大家:
零聲白金學(xué)習(xí)卡(含基礎(chǔ)架構(gòu)/高性能存儲(chǔ)/golang云原生/音視頻/Linux內(nèi)核)
https://xxetb.xet.tech/s/VsFMs