首页 > 代码库 > 3.QT中的debug相关的函数,以及文件锁的使用
3.QT中的debug相关的函数,以及文件锁的使用
1 新建项目T33Debug
main.cpp |
#include<QDebug> #include<QFile> #include<QMutex> //文件锁
voidMyMessageHandler(QtMsgTypetype,constQMessageLogContext&context,constQString&msg) { //使用一个文件锁,当在写文件的时候,要等写完之后才能继续执行 staticQMutexmutex; mutex.lock();
QStringstrContext; //在QMessageLogContext中保存的有文件名,文件行号,方法等信息 strContext.sprintf("%s%d%s:\r\n\t",context.file,context.line,context.function);
QStringoutput=strContext+msg+"\r\n";
if(type==QtDebugMsg) { QFilefile("debug.log"); file.open(QFile::WriteOnly|QFile::Append); file.write(output.toUtf8()); file.close(); } if(type==QtWarningMsg) { QFilefile("warning.log"); file.open(QFile::WriteOnly|QFile::Append); file.write(output.toUtf8()); file.close(); } if(type==QtCriticalMsg) { QFilefile("critical.log"); file.open(QFile::WriteOnly|QFile::Append); file.write(output.toUtf8()); file.close(); } if(type==QtFatalMsg) { QFilefile("fatal.log"); file.open(QFile::WriteOnly|QFile::Append); file.write(output.toUtf8()); file.close(); }
printf("%s",output.toUtf8().data()); mutex.unlock(); }
intmain() { //Tosuppresstheoutputatruntime,installyourownmessage //handlerwithqInstallMessageHandler(). qInstallMessageHandler(MyMessageHandler); qDebug()<<"outputdebug"; qDebug("%s,%d","outputdebug",1);
qWarning()<<"warning"; qCritical()<<"cridical"; //可以放开下面的一句,然后发现目录也有相应的fatal.log文件 //qFatal("fatalinfo"); } |
运行结果: 输入目录(E:\QT\build-T33Debug-Desktop_Qt_5_3_MinGW_32bit-Debug)的文件如下: |
3.QT中的debug相关的函数,以及文件锁的使用