您的位置:首页 > 编程语言 > Qt开发

Qt日志输出

2017-01-16 00:00 232 查看

Qt日志输出

实现方式

从Qt5后使用Qt::qInstallMessageHandler()实现,Qt4之前使用Qt::qInstallMsgHandler(),建议使用Qt5的Qt::qInstallMessageHandler()

级别

qDebug:调试信息

qWarning:警告信息

qCritical:严重错误

qFatal:致命错误

示例代码如下:

QString logFileName;

void outputMsg(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("Critical:");
break;

case QtFatalMsg:
text = QString("Fatal:");
}

QString context_info = QString("File:(%1) Line:(%2)").arg(QString(context.file)).arg(context.line);
QString current_date_time = QDateTime::currentDateTime().toString("[yyyy-MM-dd hh:mm:ss]");
QString message = QString("%1 %2 %3 %4").arg(current_date_time).arg(text).arg(context_info).arg(msg);

QFile file(logFileName);
file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream text_stream(&file);
text_stream << message << "\r\n";
file.flush();
file.close();

mutex.unlock();
}

int main(int argc, char *argv[])
{

QGuiApplication app(argc, argv);
QString strlogDir = QCoreApplication::applicationDirPath() + "/log";
QDir logDir(strlogDir);
if (!logDir.exists()) {
logDir.mkdir(strlogDir);
}

logFileName = strlogDir + "/QUpdater_" +
QDateTime::currentDateTime().toString("yyyy_MM_dd_hhmmss") +
".log";

//Regist MessageHandler
qInstallMessageHandler(outputMsg);
return app.exec();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt log日志