QT集成开源日志库示例

请添加图片描述

2024/04,选型qt集成的开源c++日志库。 我的需求:日志滚动 + 异步记录 + 日志清理 + window/linux arm跨平台

  • 源码集成(减少多个工程管理及不同的库包管理),源码下载方式见文章末尾
  • 对比:glog、log4cplus、spdlog
  • 经过使用及对比,考虑到性能及集成方便度,本人优先选择spdlog集成到qt工程。
  • glog:https://github.com/google/glog Star 6.8K
  • spdlog:https://github.com/gabime/spdlog Star 22K
  • log4cplus: https://github.com/log4cplus/log4cplus Star 1.6K
  • glog: 提供基本的日志记录功能,支持按大小滚动日志,但在日志清理和滚动策略方面略显不足,性能一般。
  • spdlog: 功能上不如log4cplus丰富,spdlog提供了高性能的异步日志记录功能,支持日志清理及滚动,性能较好。
  • log4cplus: 提供最丰富的功能和配置选项,支持多种日志滚动和清理策略,是功能最全面的选择,性能一般。

1. qt集成spdlog

1.1. 下载spdlog工程

当前最新版本v1.13.0,下载完成后,将include/spdlog拷贝至工程内,spdlog的集成只需要这个文件夹即可
在这里插入图片描述

1.2. 准备工程及目录

例如我的demo工程目录如下(spdlog的集成只需要spdlog文件夹下的这些头文件即可):

├── main.cpp
├── spdlogDemo.pro
└── spdlog
    ├── cfg
    ├── details
    ├── fmt
    ├── sinks
    │   └── android_sink.h ...
    └── async.h
    └── version.h...

我的 spdlogDemo.pro 如下,只需要加入如下一行即可:

# spdlog v1.13.0
INCLUDEPATH += spdlog/

1.3 滚动日志配置

#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h"

auto max_size = 1024 * 1024 * 1; // 10M
auto max_files = 5;
std::shared_ptr<spdlog::logger> file_logger;  //日志的文件指针
file_logger = spdlog::rotating_logger_mt("daily_logger",
                                         "logs/nanoServiceYolo.log",
                                         max_size,
                                         max_files);
file_logger->set_level(spdlog::level::info);

while(true) {
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
    QString formattedDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
    file_logger->info("Welcome to spdlog!");
    QString szLog = QString("Some error message with arg ----%1").arg(formattedDateTime);
    file_logger->error(szLog.toUtf8().data());
    qDebug() << "------" << szLog;
}

如上即实现了qt对spdlog的集成

2. 工程文档及源码参考

由于本人能力有限,难免有疏漏之处,望各位海涵,也希望可以和各位多交流。
文中源码文件【获取方式】:关注:利哥AI实例探险
发送 qt集成开源日志 获取下载方式,免费,无套路,关注即可!!!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值