VS+QT日志保存本地文件

1.在项目里面添加类Log

右击项目添加新类,

填好类名直接确定就行

2.填充.h文件

#ifndef QLOGGER_H
#define QLOGGER_H
#include <qstring.h>

class QLogger
{
private:
    QLogger();
    QString m_msg;
public:
    static QLogger* GetInstance();
    static QLogger* m_Instance;
    QString GetMsg();
    void setMsg(const QString& msg);
};

#endif // QLOGGER_H

3.填充.c文件

#include "qlogger.h"
#include <QApplication>
#include <qdatetime.h>
#include <QTextStream>
#include <QFile>
#include <QDate>

QLogger* QLogger::m_Instance = NULL;
void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
    QByteArray localMsg = msg.toLocal8Bit();
    QDateTime current_date_time = QDateTime::currentDateTime();
    QString currentTime = current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
    QString temp;
    switch (type) {
    case QtDebugMsg:
        temp = "[" + currentTime + "]" + " [Debug]" + msg;
        break;
    case QtInfoMsg:
        temp = "[" + currentTime + "]" + " [Info]" + msg;
        break;
    case QtWarningMsg:
        temp = "[" + currentTime + "]" + " [Warning]" + msg;
        break;
    case QtCriticalMsg:
        temp = "[" + currentTime + "]" + " [Critical]" + msg;
        break;
    case QtFatalMsg:
        temp = "[" + currentTime + "]" + " [Fatal]" + msg;
        break;
    }
    temp += " [Function]" + QString(context.function) + " :" + QString::number(context.line);
    fprintf(stderr, temp.toLocal8Bit());
    QLogger::GetInstance()->setMsg(temp);
    QFile file(QDate::currentDate().toString() + "log.txt");
    file.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream text_stream(&file);
    text_stream << temp << "\r\n";
    file.flush();
    file.close();
}

QLogger::QLogger()
{
    qInstallMessageHandler(myMessageOutput);
}

void QLogger::setMsg(const QString& msg)
{
    m_msg = msg;
}

QLogger* QLogger::GetInstance()
{
    if (m_Instance == NULL) {
        m_Instance = new QLogger();
    }
    return m_Instance;
}

QString QLogger::GetMsg()
{
    return m_msg;
}

4.在main函数中调用一次单例函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值