qt 便捷新增日志文件
qt 内置有简便重定向输出日志文件.稍微封装一下我们自己就可以使用了.
封装一个自己的日志输出方法.
void MyAuxiliary::myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toUtf8();
QString strMsg("");
switch(type)
{
case QtDebugMsg:
strMsg = QString("Debug:");
break;
case QtInfoMsg:
strMsg = QString("Info:");
break;
case QtWarningMsg:
strMsg = QString("Warning:");
break;
case QtCriticalMsg:
strMsg = QString("Critical:");
break;
case QtFatalMsg:
strMsg = QString("Fatal:");
break;
}
// 拼接输出信息
QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
QString strMessage = QString("%1:%2 File:%3 Line:%4 Function:%5 DateTime:%6")
.arg(strMsg)
.arg(localMsg.constData())
.arg(context.file)
.arg(context.line)
.arg(context.function)
.arg(strDateTime);
// 写入日志至文件中(读写、追加形式)
QFile file("log.txt");
file.open(QIODevice::ReadWrite | QIODevice::Append);
QTextStream stream(&file);
stream << strMessage << "\r\n";
file.flush();
file.close();
}
最后main文件注册冲重定向下,
qInstallMessageHandler(MyAuxiliary::myMessageOutput);
调式信息会直接写入日志文件.并且控制台没有任何输出.调式的时候我们可以将注册注释.发布了打开之前代码里的调式信息就都会输入到日志了
发布模式需要在pro文件添加一行:DEFINES += QT_MESSAGELOGCONTEXT