QT说明文档(输出详细日志)
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtInfoMsg:
fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
}
}
int main(int argc, char **argv)
{
qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
所需头文件
#include <QString>
#include <QFile>
#include <QMutex>
#include <QTextStream>
#include <QDateTime>
#include <QDir>
输出日志重定向
struct log_parameter{
log_parameter():
log_folder_path("../log/Manager/"),
max_files(24),
min_severity_level(1)
{ }
QString log_folder_path;
int max_files;
int min_severity_level;
};
static log_parameter parameter;
static void myMessageOutput(QtMsgType type,const QMessageLogContext &context,const QString &msg)
{
static QMutex mutex;
mutex.lock();
QString text;
switch (type) {
case QtDebugMsg:
text = QString("Debug:");
break;
case QtWarningMsg:
text = QString("Warning:");
break;
case QtCriticalMsg:
text = QString("Critial:");
break;
case QtInfoMsg:
text = QString("Info:");
break;
case QtFatalMsg:
text = QString("Fatal:");
break;
}
QString context_info = QString("%1:%2 Line:(%3)")
.arg(QString(context.file)).arg(QString(context.function)).arg(context.line);
QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ");
QString current_date = QString("(%1)").arg(current_date_time);
QString message = QString("%1 %2 %3 %4")
.arg(current_date).arg(text).arg(context_info).arg(msg)
QDir dir(parameter.log_folder_path);
if ( !dir.exists())
{
dir.mkpath(parameter.log_folder_path);
}
QString file_name = parameter.log_folder_path + current_date_time.left(10) + ".log";
QFile file(file_name);
if (!file.open(QIODevice::WriteOnly | QIODevice::Append))
{
mutex.unlock();
return;
}
QTextStream text_stream(&file);
text_stream << message << "\r\n";
file.flush();
file.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)