Log4Qt日志框架(1)- 引入到QT中
Log4Qt日志框架(1)- 引入到QT中
- 1 下载源码
- 2 简介
- 3 加入到自己的项目中
- 3.1 使用库文件
- 3.2 引入源文件
- 4 说明
1 下载源码
github:https://github.com/MEONMedical/Log4Qt
官方(版本较老):https://sourceforge.net/projects/log4qt/
CSDN(0积分):https://download.csdn.net/download/qq_40666149/88233421
2 简介
Log4Qt 是一个基于 Qt 的日志库,它是 Apache log4j 的一个移植版本。Log4Qt 旨在为 Qt 应用程序提供一个灵活和可配置的日志框架。以下是 Log4Qt 的一些基本特性和信息:
- 组件化:Log4Qt 提供了各种组件,如日志器(Logger)、日志级别、布局(Layout)、Appender(追加器)等,使得其非常灵活和可扩展。
- 多种日志级别:它支持多种日志级别,如 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL。
- 多种输出目标:Log4Qt 可以配置输出到多种目的地,例如:文件、控制台、数据库等。
- 布局和格式化:日志消息可以按照指定的格式进行格式化,例如:时间戳、日志级别、线程信息等。
- 异步日志:为了提高性能,Log4Qt 支持异步日志记录。
- 配置:Log4Qt 可以通过配置文件或直接使用代码进行配置,这意味着你可以在应用程序运行时更改日志配置。
- 过滤器:你可以配置过滤器来决定哪些日志消息应该被记录,哪些不应该。
- 滚动策略:对于文件输出,Log4Qt 支持滚动策略,例如当日志文件达到一定大小时创建新的日志文件。
- 和 Qt 的集成:由于是为 Qt 设计的,Log4Qt 能够很好地与 Qt 应用程序集成,包括对 Qt 的线程、信号和槽的支持。
- 可扩展性:你可以通过继承现有组件或创建新的组件来扩展 Log4Qt 的功能。
3 加入到自己的项目中
3.1 使用库文件
如果你下载的是最新版的,需要使用QT5.12及以上版本进行编译。具体信息可以阅读下载文件中的ChangeLog.md文件。
选择log4qt.pro文件进行打开,按照你的需求直接编译即可。


编译生成内容如下:

log4qt.dll、log4qt.lib这两个文件就是编译生成的库文件:
- log4qt.dll:这是动态链接库文件。它包含库的实际代码。当你的应用程序启动时,这个 .dll 文件会被加载到内存中,并且它里面的功能会被你的应用程序使用。
- log4qt.lib:这是一个导入库(或称为链接库)。它在链接时提供了.dll文件中的函数和数据的引用信息,使得链接器知道如何在运行时查找这些函数和数据。当你的应用程序被编译并链接时,它实际上是链接到这个 .lib 文件,而不是 .dll 文件。
如何将这个库加入到自己的工程?
我们随便新建一个项目,如下图

找到你创建这个项目的位置,并创建lib和bin文件夹,将log4qt.lib文件放到lib文件夹中,将log4qt.dll放入到bin中。如图所示:



创建include文件夹,将src中头文件加复制进去,如图所示:



在pro文件中加入:
DESTDIR = $$PWD/binINCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -llog4qt
如图所示:

测试使用:
在main函数中:
#include <QApplication>#include "log4qt/logger.h"
#include "log4qt/basicconfigurator.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);Log4Qt::BasicConfigurator::configure();Log4Qt::Logger * log = Log4Qt::Logger::rootLogger();log->debug("debug!");log->info("information!");log->warn("warn");return a.exec();
}
编译运行生成如下:

3.2 引入源文件
随便创建一个项目,并将源码中的src下的log4qt文件夹复制到自己创建的项目下,如图所示:

将build.pri和g++.pri也复制到log4qt文件下,如图:

在pro文件中加入:
DESTDIR = $$PWD/binINCLUDEPATH += $$PWD/log4qt
include($$PWD/log4qt/log4qt.pri)

在左侧的项目中可以看到:

修改log4qt.pri文件,加入:
#加载模块
QT += xml network concurrent sqlDEFINES +=LOG4QT_STATIC
include($$PWD/build.pri)
include($$PWD/g++.pri)

测试使用:
在main函数中:
#include <QApplication>#include "log4qt/logger.h"
#include "log4qt/basicconfigurator.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);Log4Qt::BasicConfigurator::configure();Log4Qt::Logger * log = Log4Qt::Logger::rootLogger();log->debug("debug!");log->info("information!");log->warn("warn");return a.exec();
}

4 说明
上面两种方式都可以,根据自己项目需要选择。我是直接引入源文件的。
相关文章:
Log4Qt日志框架(1)- 引入到QT中
Log4Qt日志框架(1)- 引入到QT中 1 下载源码2 简介3 加入到自己的项目中3.1 使用库文件3.2 引入源文件 4 说明 1 下载源码 github:https://github.com/MEONMedical/Log4Qt 官方(版本较老):https://sourceforge.net/projects/log4q…...
【算法刷题之哈希表篇(1)】
目录 1.哈希表基础理论2.leetcode-242. 有效的字母异位词(1)方法一:排序(2)方法二:哈希表 3.leetcode-349. 两个数组的交集(1)方法一:哈希表(2)方…...
uni-app 打包生成签名Sha1
Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。 可以使用JRE环境中的keytool命令生成。以下是windows平台生成证书的方法: 安装JRE环境(推荐使用JRE8环境&am…...
【Django】Django创建一个文件下载服务
当使用Django创建一个下载服务时,您可以设置一个视图来处理文件下载请求,并根据您的需求提供文件下载链接。以下是一个简单的示例,演示如何在Django中实现基本的文件下载服务: 创建Django项目和应用: 首先,…...
Navicat for Mysql 显示 emoji 表情符号乱码问题 — 其它乱码情况都可参考
系统环境: 操作系统:MAC OS 10.11.6 MySQL:Server version: 5.6.21 MySQL Community Server (GPL) Navicat for MySQL: version 9.3.1 - standard 1、问题发现 在客户端执行用户注册,用户名包括 emoji 表情符号,注册完…...
《数字图像处理-OpenCV/Python》连载(2)目录
《数字图像处理-OpenCV/Python》连载(2)目录 本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 第一部分 OpenCV-Python的基本操作 第1章 …...
Go学习-Day4
文章目录 Go学习-Day4函数值传递,引用传递常用的函数 异常处理数组Slice切片 Go学习-Day4 个人博客:CSDN博客 函数 值传递,引用传递 值传递直接拷贝值,一般是基本数据类型,数组,结构体也是引用传递传递…...
将el-dialog封装成函数调用
1、 使用Vue实例化方法 // MyDialog.js import Vue from vue export const openFormDialog function ({ props {}, events {} }) {const vm new Vue({data () {return {form: {}}},render () {return (<el-dialogvisible{true}{...{ props }}{...{ on: events }}onClos…...
Windows10批处理命令行设置环境变量笔记,无需重新安装python与chrome
近期,工作中经常安装、部署python生产、开发环境,比较麻烦,也没有心情去优化。突然,我的电脑崩溃了,在重新安装电脑的过程中,保留了原来的安装软件(有的没有放在系统盘中)࿰…...
统计学补充概念07-比较树
概念 在层次聚类中,聚类结果可以以树状结构表示,通常称为树状图(Dendrogram)。树状图展示了数据点如何被合并或分裂以形成聚类的层次结构。通过观察树状图,可以更直观地理解数据点之间的相似性和关系。 在比较树状图…...
设计原则 --《设计模式之美》总结篇
本文是阅读《设计模式之美》的总结和心得,跳过了书中对面试和工作用处不大或不多的知识点,总结总共分为三章,分别是面对对象编程范式、设计原则和设计模式。 设计模式是代码设计时的一些经验总结。相比于设计模式,设计原则更抽象。…...
Day16-蜗牛影城后端开发
蜗牛影城后端开发 一 多表关联查询 电影集合movie的type(类别)字段关联到电影类别movieType表的_id(主键) 二 蜗牛影城后端开发 1 数据的导入导出 2 用户模块 UserModel.js //导入mongoose,并解构出Schema(类)和model(对象) const {Schema,model} =...
axios / fetch 实现 stream 流式请求
axios 是一个支持node端和浏览器端的易用、简洁且高效的http库。本文主要介绍 axios 如何实现 stream 流式请求,注意这里需要区分 node 环境和浏览器环境。 一、node端 代码演示: const axios require(axios);axios({method: get,url: http://tiven.c…...
Pytorch学习:torchvison.transforms常用包(ToTensor、Resize、Compose和RandomCrop)
torchvision.transforms常用包 1. torchvision.transforms.ToTensor2. torchvision.transforms.Resize3. torchvision.transforms.Compose4. torchvision.transforms.Normalize5. torchvision.transforms.RandomCrop 1. torchvision.transforms.ToTensor 将PIL Image或ndarray…...
算法通关村十二关 | 字符串转换
1. 转换小写字母 LeetCode709:给你一个字符串s,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 每个字母都是有确定的ASCII的,可以根据码表操作子字符串,常见的ASCII范围是: a-z: 97-122, …...
前端进阶Html+css09----BFC模型
1.什么是BFC模型 全称是:Block formatting context(块级格式化上下文),是一个独立的布局环境,不受外界的影响。 2.FC,BFC,IFC 元素在标准流里都属于一个FC(Formatting Context)。 块级元素的布…...
重排链表(C语言)
题目: 示例: 思路: 这题我们将使用栈解决这个问题,利用栈先进后出的特点,从链表的中间位置进行入栈,寻找链表的中间位置参考:删除链表的中间节点,之后从头开始进行连接。 本题使用…...
el-table动态合并单元格
el-table使用这个方法合并单元格,:span-method“hbcell” <el-table size"small" :data"table.data" border empty-text"暂无数据" :cell-style"cellStyle" :header-cell-style"tableHeaderColor":span-meth…...
html元素
文章目录 html基本结构属性语义化为什么要语义化 示例head中属性样式一些概念块级元素与行级元素空白折叠 html编程没有css的html显示逻辑 html基本结构 html基本单元就是元素,每个元素有标记和属性,如: <a href"...">www&…...
push github
一、生成密钥 打开git bash执行下面指令,Enter下一步Enter下一步..生成ssh key 密钥; ssh-keygen -t rsa 二、 复制公共密钥到git hub 登录github,在选项setting >> SSH and GPG key >> add new ssh添加刚才的公钥地址即可 验证…...
隐私保护方案:OpenClaw+GLM-4.7-Flash本地化处理敏感数据
隐私保护方案:OpenClawGLM-4.7-Flash本地化处理敏感数据 1. 为什么需要本地化处理敏感数据? 去年我帮一位做财务咨询的朋友处理季度报表时,遇到了一个棘手问题。他需要分析上百份包含客户银行流水、身份证号等信息的Excel文件,但…...
360CDN 全系列产品体验:CDN / 高防 / SDK 游戏盾横向测评
作为深耕互联网技术领域多年的开发者,平时无论是个人项目还是公司业务,都经常需要用到CDN加速、网络防护类产品。近期正好完整上手测试了360CDN全系列核心产品,涵盖基础CDN加速、高防CDN、SDK游戏盾三款,全程以真实业务场景为测试…...
【GNSS定位原理及算法杂记2】GNSS观测量:从捕获到解算,揭秘接收机内部信号处理链路
1. GNSS观测量:定位技术的三大支柱 当你打开手机地图查看自己的位置时,背后是GNSS接收机在默默工作。它通过处理来自太空卫星的信号,最终计算出你所在的位置。这个过程中最关键的就是三种观测量:伪距、载波相位和多普勒频移。这三…...
PotPlayer跨语言字幕解决方案:基于百度翻译API的实时字幕转换工具
PotPlayer跨语言字幕解决方案:基于百度翻译API的实时字幕转换工具 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 在全球化…...
别再手动对齐了!Excel双坐标折线图保姆级教程,5分钟搞定销售与成本对比分析
Excel双坐标折线图实战:销售与成本可视化分析的进阶技巧 当市场专员小林第一次尝试将季度销售额(单位:万元)和成本率(单位:百分比)放在同一张图表时,她发现了一个尴尬的现象——代表…...
5个维度解析:如何通过Excel可视化突破AI算法学习瓶颈
5个维度解析:如何通过Excel可视化突破AI算法学习瓶颈 【免费下载链接】ai-by-hand-excel 项目地址: https://gitcode.com/gh_mirrors/ai/ai-by-hand-excel 你是否也曾在学习AI算法时遇到这样的困境:面对满屏的数学公式感到无从下手,神…...
Android开发避坑指南:registerForActivityResult找不到?可能是依赖版本惹的祸
Android开发实战:全面解析registerForActivityResult的正确使用与版本适配 在Android应用开发中,Activity之间的数据传递一直是核心功能之一。随着Jetpack组件的不断演进,Google推出了registerForActivityResult这一现代化API来替代传统的sta…...
从座舱芯片到指尖触控:聊聊高通8155/8295上那个你可能没注意到的Virtio Touch框架
从座舱芯片到指尖触控:高通8155/8295中的Virtio Touch框架解析 当你的手指在车载中控屏上滑动时,一组坐标数据正以微秒级速度穿越两个操作系统——这背后是高通座舱芯片中鲜为人知的Virtio Touch框架在发挥作用。作为连接QNX Hypervisor与Android系统的神…...
大三大学生挖洞收入十万背后:网安圈的“天才少年”,普通人能复制吗?
大三学生挖洞收入十万背后:网安圈的 “天才少年” ,普通人能复制吗? SRC首期学员战绩疯传:大四小白45天回本6K?大三在读2个月挖洞收获六位数? 当朋友圈被"零基础挖洞暴富"的捷报疯狂刷屏时&…...
【Nano Bana】谷歌风格智能手表UI界面
谷歌风格智能手表UI提示词(专业工程版设计/开发专用) 在嵌入式智能手表UI设计与开发过程中,符合行业规范且适配开发需求的提示词,是高效生成可用界面、对接GUI框架的关键。本文汇总了适配Nano Banana工具的谷歌风格智能手表UI提示…...
