qt4/qt5 日志代码简单记录

目录

qt4 log

log.h

main函数

qt5 log

log.h

main函数


qt4 log

log.h

#include <QtMsgHandler>
#include <QDateTime>
#include <QFile>
#include <QMutex>
void outputMessage(QtMsgType type, const char *msg)
{
    static QMutex mutex;
    mutex.lock();
    QString txt;
    QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
    QString current_date = QString("(%1)").arg(current_date_time);
    switch (type) {
    case QtDebugMsg:
        txt = QString("Debug: %1").arg(msg);
        break;
    case QtWarningMsg:
        txt = QString("Info: %1").arg(msg);
        break;
    case QtCriticalMsg:
        txt = QString("Critical: %1").arg(msg);
        break;
    case QtFatalMsg:
        txt = QString("Fatal: %1").arg(msg);
        abort();
    }

    QFile outFile(QCoreApplication::applicationDirPath() + LOG_FILENAME);
    outFile.open(QIODevice::ReadWrite|QIODevice::Text|QIODevice::Append);
    QTextStream ts(&outFile);
    ts << txt << endl;
    outFile.flush();
    outFile.close();
    mutex.unlock();
}

main函数

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

    QString path = QCoreApplication::applicationDirPath();
    if(QFile::exists(path + LOG_FILENAME))
    {
        QFile::remove(path + LOG_FILENAME);
    }

    qInstallMsgHandler(outputMessage);

    MainWindow w;
    w.show();

    return a.exec();
}

qt5 log

log.h

void MessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    static QMutex mutex;
    mutex.lock();

    QByteArray localMsg = msg.toLocal8Bit();

    QString strMsg("");
    switch(type)
    {
    case QtDebugMsg:
        strMsg = QString("Debug:");
        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 ddd");
    QString strMessage = QString("DateTime[%1] File[%2] Line[%3] Function:%4 Message:%5")
            .arg(strDateTime)
            .arg(context.file)
            .arg(context.line)
            .arg(context.function)
            .arg(localMsg.constData());

    QFile file(QCoreApplication::applicationDirPath() + "/" + LOG_FILENAME);
    file.open(QIODevice::ReadWrite | QIODevice::Text| QIODevice::Append);
    QTextStream stream(&file);
    stream << strMessage << "\r\n";
    file.flush();
    file.close();

    mutex.unlock();
}

main函数

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    
    //1、创建Log
//    //方法一:每次新建log
//    QString path = QCoreApplication::applicationDirPath();
//    if(QFile::exists(path + LOG_FILENAME))
//    {
//        QFile::remove(path + LOG_FILENAME);
//    }
    
    //方法二:文件大于4MB,清除
    const int SIZE = 1024 * 1024 *4;
    QString path = QCoreApplication::applicationDirPath();
    if(QFile::exists(path + LOG_FILENAME) && (SIZE < QFile(path + LOG_FILENAME).size()))
    {
        QFile::remove(path + LOG_FILENAME);
    }
    
    qInstallMessageHandler(MessageOutput);
    
    qDebug("debug message.");
    qWarning("warning message.");
    qCritical("critical message.");
    qFatal("fatal message.");

    MainWindow w;
    
    
    w.show();
    
    //2、创建窗口大小(当前桌面的一半)
    QScreen *pScreen = nullptr;
    if(nullptr != qApp)
    {
        pScreen = qApp->primaryScreen();
    }
    if(nullptr != pScreen)
    {
        int width = pScreen->size().width();
        int height = pScreen->size().height();
        w.setMinimumSize(width/2, height/2);
    }

    return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值