Log4Qt日志框架(1)- 引入到QT中

Log4Qt日志框架(1)- 引入到QT中

  • [1 下载源码](#1 下载源码)
  • [2 简介](#2 简介)
  • [3 加入到自己的项目中](#3 加入到自己的项目中)
    • [3.1 使用库文件](#3.1 使用库文件)
    • [3.2 引入源文件](#3.2 引入源文件)
  • [4 说明](#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这两个文件就是编译生成的库文件

  1. log4qt.dll:这是动态链接库文件。它包含库的实际代码。当你的应用程序启动时,这个 .dll 文件会被加载到内存中,并且它里面的功能会被你的应用程序使用。
  2. log4qt.lib:这是一个导入库(或称为链接库)。它在链接时提供了.dll文件中的函数和数据的引用信息,使得链接器知道如何在运行时查找这些函数和数据。当你的应用程序被编译并链接时,它实际上是链接到这个 .lib 文件,而不是 .dll 文件。

如何将这个库加入到自己的工程?

我们随便新建一个项目,如下图

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


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


在pro文件中加入:

cpp 复制代码
DESTDIR = $$PWD/bin

INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -llog4qt

如图所示:

测试使用:

在main函数中:

cpp 复制代码
#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文件中加入:

cpp 复制代码
DESTDIR = $$PWD/bin

INCLUDEPATH += $$PWD/log4qt
include($$PWD/log4qt/log4qt.pri)

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

修改log4qt.pri文件,加入:

cpp 复制代码
#加载模块
QT += xml network concurrent sql

DEFINES +=LOG4QT_STATIC
include($$PWD/build.pri)
include($$PWD/g++.pri)


测试使用:

在main函数中:

cpp 复制代码
#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 说明

上面两种方式都可以,根据自己项目需要选择。我是直接引入源文件的。

相关推荐
云空2 小时前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
小老鼠不吃猫3 小时前
力学笃行(二)Qt 示例程序运行
开发语言·qt
晓纪同学5 小时前
QT创建一个模板槽和信号刷新UI
开发语言·qt·ui
爱码小白6 小时前
PyQt5 学习方法之悟道
开发语言·qt·学习方法
人才程序员19 小时前
QML z轴(z-order)前后层级
c语言·前端·c++·qt·软件工程·用户界面·界面
学习BigData19 小时前
【使用PyQt5和YOLOv11开发电脑屏幕区域的实时分类GUI】——选择检测区域
qt·yolo·分类
yerennuo1 天前
FFmpeg库之ffmpeg
qt·ffmpeg
冷眼看人间恩怨1 天前
【Qt笔记】QComboBox控件详解
c++·笔记·qt
阿松のblog1 天前
pyQt5实现页面切换操作
开发语言·qt
人才程序员1 天前
【无标题】
c语言·前端·c++·qt·软件工程·qml·界面