Qtの最もシンプルなロギングシステム

#include <QtWidgets/QApplication>
#include <iostream>
#include <windows.h>
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
	QByteArray localMsg = msg.toLocal8Bit();
	const char *file = context.file ? context.file : "";
	const char *function = context.function ? context.function : "";
	switch (type) {
	case QtDebugMsg:
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
		fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), file, context.line, function);
		break;
	case QtWarningMsg:
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), file, context.line, function);
		break;
// 	case QtFatalMsg://Qt  让程序在这里挂掉
// 		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
// 		fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), file, context.line, function);
// 		break;
	case QtCriticalMsg:
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
		fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), file, context.line, function);
		break;
	}
}
int main(int argc, char *argv[])
{
	qInstallMessageHandler(myMessageOutput);
    QApplication a(argc, argv);	
	qDebug("This is a debug message");
	qWarning("This is a warning message");
	qCritical("This is a critical message");
	//qFatal("This is a warning message");// 程序此处崩溃掉

    return a.exec();
}

おすすめ

転載: blog.csdn.net/weixin_39308337/article/details/105396385