【Qt】宏定义日志打印与输出文件

    技术2022-07-11  128

    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 /* debug mode */ #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 /* release mode */ #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 // QT_DEBUG int main(int argc, char *argv[]) { /* log information */ 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

    Processed: 0.012, SQL: 9