QT中使用宏定义打印与输出日志文件
代码
#include <QDebug>
#include <QDateTime>
#include <QFile>
#include <QString>
static QString strLogName
= QDateTime
::currentDateTime().toString("yyyy-MM-dd_hh-mm-ss") + ".log";
#ifdef QT_DEBUG
#define LOG(...) (\
{\
qDebug().noquote() << "[" << QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm-ss-zzz ")\
<< __FILE__ << "(" << __LINE__ << ")" << "-" << "<" << __FUNCTION__ << ">" << "] " << __VA_ARGS__;\
QFile fileLog(strLogName); \
if(fileLog.open(QIODevice::WriteOnly | QIODevice::Append))\
{\
QTextStream streamLog(&fileLog);\
streamLog << "[" << (QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm-ss-zzz"))\
<< " <Debug> " << __FILE__ << "(" << __LINE__ << ")" << "-" << "<" << __FUNCTION__ << ">" << "] " << __VA_ARGS__ << "\r\n";\
fileLog.flush();\
fileLog.close();\
}\
})
#else
#define LOG(...) (\
{\
QFile fileLog(strLogName); \
if(fileLog.open(QIODevice::WriteOnly | QIODevice::Append))\
{\
QTextStream streamLog(&fileLog);\
streamLog << "[" << (QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm-ss-zzz"))\
<< " <Release> " << __FILE__ << "(" << __LINE__ << ")" << "-" << "<" << __FUNCTION__ << ">" << "] " << __VA_ARGS__ << "\r\n";\
fileLog.flush();\
fileLog.close();\
}\
})
#endif
int main(int argc
, char *argv
[])
{
LOG("log file test!");
return 0;
}
输出
[ 2020-07-01_16-51-09-474, …/main.cpp ( 16 ) - < main > ] log file test!
参考
Qt 日志宏:https://www.cnblogs.com/rogation/p/4040361.html