QsLog日志

研究下QsLog,用于Qt开发。

QsLog支持六个日志级别,优先级从低到高依次为:Trace、Debug、Info、Warn、Error、Fatal、Off。

【使用】

#include <QtCore/QCoreApplication>
#include<QDir>
#include<QDebug>
#pragma execution_character_set("utf-8")    //避免中文乱码

#include<QsLog.h>   //引入日志

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

    using namespace QsLogging;
    Logger& logger = Logger::instance();    //初始化
    logger.setLoggingLevel(QsLogging::InfoLevel);  //设置写入等级
    const QString sLogPath(QDir(a.applicationDirPath()).filePath("logs/log.txt"));   //写入的文件,自己在exe的目录新建logs文件夹
    //该文件可被拆分,当大小超5M时被拆分,最多10个旧文件(超过则自动删除最旧的)。若txt已经存在,则内容继续往最新的里写,而不会清空。
    DestinationPtr fileDestination(DestinationFactory::MakeFileDestination(sLogPath, EnableLogRotation, MaxSizeBytes(1024*1024*5), MaxOldLogCount(10)));
    logger.addDestination(fileDestination);

    for (int i = 0; i < 100; i++)
    {
        QLOG_TRACE() << "Here's a" << QString::fromUtf8("trace") << "message";
        QLOG_DEBUG() << "Here's a" << static_cast<int>(QsLogging::DebugLevel) << "message";
        QLOG_INFO() << "Program started";
        QLOG_INFO() << "Built with Qt" << QT_VERSION_STR << "running on" << qVersion();
        QLOG_WARN() << "Uh-oh!";        
        QLOG_ERROR() << "An error has occurred";
        QLOG_FATAL() << "Fatal error!";
    }
    qDebug() << "写入完毕";
    QsLogging::Logger::destroyInstance();   //释放

    return a.exec();
}

若想以日期为txt名,参考如下:

const QString sLogPath="C:/Logs/"+QDateTime::currentDateTime().toString("yyyyMMdd")+".txt"; //以日期为txt名称

【配置】

1、生成dll、lib

git上下载后,用Qt打开 QsLogSharedLibrary.pro

Debug模式下,运行一次(若失败,取消影子构建),将dll和lib拷贝出来。防止Release时覆盖,因为名字一样。

Release模式下再来一次,将dll和lib拷贝出来。

将所有的h文件拷贝出来。我放到了C盘,如下图

 

 2、配置环境

系统环境变量中添加存有dll的目录

 VS新建项目后,把include和lib配置好即可

 

 

【参考】

(5条消息) Qt轻量级日志库QsLog的使用_百里杨的博客-CSDN博客_qt 日志库

posted @ 2022-03-01 14:42  夕西行  阅读(723)  评论(0编辑  收藏  举报