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添加刚才的公钥地址即可 验证…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...