您现在的位置是:首页 > 技术文章网站首页技术文章

[Qt]打印调试日志

  • WangYe
  • 2021-04-18 23:45:01
  • 317 次阅读
打印Qt调试日志文件

源码:

#include <QFile>
#include <QMessageLogger>
#include <QTextStream>
#include <QDateTime>

QFile* gFileLog = NULL;

char* msgHead[] = {
	"Debug   ",
	"Warning ",
	"Critical",
	"Fatal   ",
	"Info    "
};

void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
	QByteArray localMsg = msg.toLocal8Bit();
	QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");

	if (gFileLog) {
		QTextStream tWrite(gFileLog);

		QString msgText = "%1 | %6 | %2:%3, %4 | %5\n";
		msgText = msgText.arg(msgHead[type]).arg(context.file).arg(context.line).arg(context.function).arg(localMsg.constData()).arg(current_date_time);
		//gFileLog->write(msgText.toLocal8Bit(), msgText.length());
		tWrite << msgText;
	}
	else {
		fprintf(stderr, "%s | %s | %s:%u, %s | %s\n", msgHead[type], current_date_time.toLocal8Bit().constData(), context.file, context.line, context.function, localMsg.constData());
	}
}

void logSysInit(QString filePath)
{
	gFileLog = new QFile(filePath);
	if (!gFileLog->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
		return;
	}
	//初始化自定义日志处理函数myMessageOutput
	qInstallMessageHandler(myMessageOutput);

}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FFmpeg_OpenGL w;
    w.show();

	//输入一个日志文件名字
	logSysInit("log.txt");
	//打印日志到文件中
	qDebug("This is a debug message");
	qWarning("This is a warning message");
	qCritical("This is a critical message");

    return a.exec();
}

效果:

1618760476232578.png

TAG: Qt 日志 Log

文章评论 (0)



Top