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

posted @ 2020-09-01 09:47  Freedom-萱  阅读(332)  评论(1编辑  收藏  举报