QT中日志框架
#include "mainwindow.h" #include <QtWidgets/QApplication> #include <QSettings> #include <QDebug> #include <QFile> #include <iostream> #include <QDebug> #include <QtMessageHandler> #include <QFile> #include <QDir> #include <QDateTime> using namespace std; void WriteLog(QString str, QString LogType) { QString fileFolder = qApp->applicationDirPath() + "/log/" + QDateTime::currentDateTime().toString("yyyy-MM-dd"); QDir dir(fileFolder); if (!dir.exists()) { dir.mkpath(fileFolder); } QString filePath = QString("%1/%2.log").arg(fileFolder).arg(LogType); QString strToWrite = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); strToWrite.append(QString("\r\n日志消息:%1").arg(str)); strToWrite.append("\r\n---------------------------------------------------------------------"); QFile file(filePath); file.open(QIODevice::WriteOnly | QIODevice::Append); QTextStream text_stream(&file); text_stream << strToWrite << "\r\n"; file.flush(); file.close(); //打印到控制台 //std::cout << strToWrite.toLocal8Bit().constData() << std::endl; } //注册函数 void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QString txtMessage = ""; QString messageType = ""; switch (type) { case QtDebugMsg: //调试信息提示 messageType = "Debug"; txtMessage = QString("Debug: %1 (%2:%3, %4)\n").arg(msg).arg(context.file).arg(QString::number(context.line)).arg(context.function); break; case QtInfoMsg: messageType = "Info"; txtMessage = QString("Warning: %1 (%2:%3, %4)\n").arg(msg).arg(context.file).arg(QString::number(context.line)).arg(context.function); break; case QtWarningMsg: //一般的warning提示 messageType = "Waring"; txtMessage = QString("Warning: %1 (%2:%3, %4)\n").arg(msg).arg(context.file).arg(QString::number(context.line)).arg(context.function); break; case QtCriticalMsg: //严重错误提示 messageType = "Critical"; txtMessage = QString("Critical: %1 (%2:%3, %4)\n").arg(msg).arg(context.file).arg(QString::number(context.line)).arg(context.function); // PostErrorMessage(txtMessage,messageType); break; case QtFatalMsg: //致命错误提示 messageType = "Fatal"; txtMessage = QString("Fatal: %1 (%2:%3, %4)\n").arg(msg).arg(context.file).arg(QString::number(context.line)).arg(context.function); abort(); } WriteLog(txtMessage, messageType); } int main(int argc, char *argv[]) { QApplication a(argc, argv); //注册监听级别函数 qInstallMessageHandler(myMessageOutput); MainWindow w; //w.show(); return a.exec(); }
在QT的main.cpp文件中加入以上代码即可,使用时直接用不同的 qDebug() << "输出》》》"就行;
放松一下:
人生如逆旅,我亦是行人,但愿初相见,不负有心人。
加油!

浙公网安备 33010602011771号