Qt日志库QsLog使用教程

前言

最近项目中需要用到日志库。上一次项目中用到了log4qt库,这个库有个麻烦的点是要配置config文件,所以这次切换到了QsLog。用了后这个库的感受是,比较轻量级,嘎嘎好用,推荐一波。

下载QsLog库

https://github.com/victronenergy/QsLog

使用

源码引入

我是放在3rdparty目录下的,所以在主工程pro中新增代码:

INCLUDEPATH += $$PWD/../3rdparty/QsLog
include($$PWD/../3rdparty/QsLog/QsLog.pri)

初始化

简单配置下初始化参数,主要配置 MaxSizeBytes和MaxOldLogCount,其他的直接用就好了。必须的头文件:#include "./QsLog.h"

#include "./QsLog.h"
bool logConfig()
{
    QsLogging::Logger& logger = QsLogging::Logger::instance();
    logger.setLoggingLevel(QsLogging::TraceLevel);

    //设置log位置为exe所在目录
    const QString sLogPath(QDir(QCoreApplication::applicationDirPath()).filePath("log.txt"));

    // 2. 添加两个destination
    QsLogging::DestinationPtr fileDestination(QsLogging::DestinationFactory::MakeFileDestination(
                                       sLogPath, QsLogging::EnableLogRotation, QsLogging::MaxSizeBytes(512000), QsLogging::MaxOldLogCount(5)));
    QsLogging::DestinationPtr debugDestination(QsLogging::DestinationFactory::MakeDebugOutputDestination());
    //DestinationPtr functorDestination(DestinationFactory::MakeFunctorDestination(&logFunction));

    //这样和槽函数连接
    //DestinationPtr sigsSlotDestination(DestinationFactory::MakeFunctorDestination(this, SLOT(logSlot(QString,int))));

    logger.addDestination(debugDestination);
    logger.addDestination(fileDestination);
    //logger.addDestination(functorDestination);
    //logger.addDestination(sigsSlotDestination);

    return true;
}

使用

  QLOG_INFO() << "Program started";
    QLOG_INFO() << "Built with Qt" << QT_VERSION_STR << "running on" << qVersion();

    QLOG_TRACE() << "Here's a" << QString::fromUtf8("trace") << "message";
    QLOG_DEBUG() << "Here's a" << static_cast<int>(QsLogging::DebugLevel) << "message";
    QLOG_WARN()  << "Uh-oh!";
    qDebug() << "This message won't be picked up by the logger";
    QLOG_ERROR() << "An error has occurred";
    qWarning() << "Neither will this one";
    QLOG_FATAL() << "Fatal error!";

最后效果

切割log文件

log.txt中的数据

原文地址

Qt日志库QsLog使用教程-小何博客

相关推荐
看山还是山,看水还是。9 分钟前
C# 类(Class)
运维·开发语言·c#·运维开发
小朝说技术16 分钟前
Golang学习总结
开发语言·后端·学习·golang
Eiceblue31 分钟前
用Python在PDF文档中创建动作
linux·开发语言·vscode·python·pdf
propor1 小时前
Qt杂项功能实现
开发语言·qt
Kevin&Amy1 小时前
Golang时间格式化的陷阱与解决方案
开发语言·golang
CCTV果冻爽1 小时前
LuaJit分析(五)LuaJit filename分析
java·开发语言
lly2024061 小时前
WebForms DataList 控件深入解析
开发语言
joker.zeng1 小时前
zset使用lua实现取最高分数中的随机成员
开发语言·redis·junit·lua·队列·redis有序集合
Mindfulness code1 小时前
Go 语言文件 I/O 和 OS 操作
开发语言·go·文件i/o
棕豆兔&1 小时前
Linux 搭建 Java 部署环境:安装 JDK 和 MySQL 的教程
java·开发语言·mysql