当前位置: 首页 > news >正文

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. 添加两个destinationQsLogging::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使用教程-小何博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL(8)事务
  • 网络安全——防御课实验二
  • Chatgpt和GLM api的使用
  • 【iOS】类对象的结构分析
  • 沙尘传输模拟教程(基于wrf-chem)
  • 【算法/天梯赛训练】天梯赛模拟题集
  • Git报错:error: fsmonitor--daemon failed to start处理方法
  • 高并发服务器-使用多进程(Multi-Process)实现【C语言】
  • MacOS命令行运行fortran程序|编程私教解答
  • web安全之跨站脚本攻击xss
  • R-CNN、Fast R-CNN和Faster R-CNN:目标检测的进化之路
  • 什么叫图像的双边滤波,并附利用OpenCV和MATLB实现双边滤波的代码
  • 爬虫管理:开启企业大数据时代的智能信息搜集
  • 2024全球和国内最常用的弱密码,有没有你的?
  • vue3 + antd + typeScript 封装一个高仿的ProTable(2)
  • 【Amaple教程】5. 插件
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • flask接收请求并推入栈
  • JS笔记四:作用域、变量(函数)提升
  • Linux中的硬链接与软链接
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 前端面试题总结
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #Java第九次作业--输入输出流和文件操作
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (9)目标检测_SSD的原理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (javaweb)Http协议
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (ros//EnvironmentVariables)ros环境变量
  • (分类)KNN算法- 参数调优
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (力扣)循环队列的实现与详解(C语言)
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • .cn根服务器被攻击之后
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET HttpWebRequest、WebClient、HttpClient
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 使用配置文件
  • .NetCore项目nginx发布
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .Net的DataSet直接与SQL2005交互
  • .NET基础篇——反射的奥妙
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .sdf和.msp文件读取
  • /proc/interrupts 和 /proc/stat 查看中断的情况