随便写了一个日志帮助的宏,既可以如同qDebug()一般在调试时输出信息,也可以在输出文本文件
#ifndef LOG_H #define LOG_H #include <QDir> #include <QFile> #include <QString> #include <QDebug> #include <QDate> #include <QTime> #include <QDateTime> #include <QTextStream> #define WRITE_LOG_FILE(type,msg)( {QString err; switch(type){ case QtDebugMsg:{err = "调试信息:";}break; case QtWarningMsg:{err = "警告信息:";}break; case QtCriticalMsg:{err = "严重错误:";}break; case QtFatalMsg:{err = "致命错误:";}break; default:{err = "常规信息:";}break;} QString text = QString("%1 所在文件:%2 所在位置:%3 记录时间:%4 记录信息:%5 ").arg (err).arg (__FILE__).arg (__LINE__).arg (QDateTime::currentDateTime ().toString ("yyyy-MM-dd hh:mm:ss ddd")).arg (msg);qDebug() << text; QDir dir; QString path = dir.currentPath () + "\log\"; QDateTime dt = QDateTime::currentDateTime (); QTime t = dt.time (); QDate d = dt.date (); QString name = QString("%1%2%3%4").arg (QString::number (d.year ())).arg (QString::number (d.month ())).arg (QString::number (d.day ())).arg (QString::number (t.hour ())) + QString(".txt"); QString filePath = path + name; if(!dir.exists(path)) { dir.mkpath(path); } QFile file(filePath); if(!file.exists ()) { file.open (QIODevice::WriteOnly); file.close (); } if(file.open(QIODevice::WriteOnly | QIODevice::Append)) { QTextStream stream(&file); stream << text << " "; file.flush();file.close(); } }) #define DEBUG_LOG(msg)(WRITE_LOG_FILE(QtDebugMsg,msg)) #define WARNING_LOG(msg)(WRITE_LOG_FILE(QtWarningMsg,msg)) #define CRITICAL_LOG(msg)(WRITE_LOG_FILE(QtCriticalMsg,msg)) #define FATAL_LOG(msg)(WRITE_LOG_FILE(QtFatalMsg,msg)) #define LOG(msg)(WRITE_LOG_FILE(-1,msg)) #endif // LOG_H