3.QT中的debug相关的函数,以及文件锁的使用
1? 新建項(xiàng)目T33Debug
| main.cpp |
| #include <QDebug> #include <QFile> #include <QMutex>?? //文件鎖 ? void MyMessageHandler(QtMsgType type,const QMessageLogContext &context,const QString &msg) { ??? //使用一個(gè)文件鎖,當(dāng)在寫文件的時(shí)候,要等寫完之后才能繼續(xù)執(zhí)行 ??? static QMutex mutex; ??? mutex.lock(); ? ??? QString strContext; ??? //在QMessageLogContext中保存的有文件名,文件行號(hào),方法等信息 ??? strContext.sprintf("%s %d %s:\r\n\t",context.file,context.line,context.function); ? ??? QString output = strContext + msg + "\r\n"; ? ??? if(type == QtDebugMsg) ??? { ??????? QFile file("debug.log"); ??????? file.open(QFile::WriteOnly | QFile::Append); ??????? file.write(output.toUtf8()); ??????? file.close(); ??? } ??? if(type == QtWarningMsg) ??? { ??????? QFile file("warning.log"); ??????? file.open(QFile::WriteOnly|QFile::Append); ??? ????file.write(output.toUtf8()); ??????? file.close(); ??? } ??? if(type == QtCriticalMsg) ??? { ??????? QFile file("critical.log"); ??????? file.open(QFile::WriteOnly | QFile::Append); ??????? file.write(output.toUtf8()); ??????? file.close(); ??? } ??? if(type == QtFatalMsg) ??? { ??????? QFile file("fatal.log"); ??????? file.open(QFile::WriteOnly | QFile::Append); ??????? file.write(output.toUtf8()); ??????? file.close(); ??? } ? ??? printf("%s",output.toUtf8().data()); ??? mutex.unlock(); } ? int main() { ??? //To suppress the output at runtime, install your own message ??? //handler with qInstallMessageHandler(). ??? qInstallMessageHandler(MyMessageHandler); ??? qDebug() << "output debug"; ??? qDebug("%s,%d","outputdebug",1); ? ??? qWarning() << "warning"; ??? qCritical() << "cridical"; ??? //可以放開下面的一句,然后發(fā)現(xiàn)目錄也有相應(yīng)的fatal.log文件 ??? //qFatal("fatal info"); } |
| 運(yùn)行結(jié)果:
輸入目錄(E:\QT\build-T33Debug-Desktop_Qt_5_3_MinGW_32bit-Debug)的文件如下:
|
?
總結(jié)
以上是生活随笔為你收集整理的3.QT中的debug相关的函数,以及文件锁的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车国六B标准什么时候开始实施?
- 下一篇: 为什么叫牛轧糖?