在文章《C++ 日志框架》中,我们介绍了一些主流的C++日志框架。有关选择的信息,请参阅本文的日志选择标准部分。
对于许多人来说,他们的第一选择将是Log4cpp、log4cplus、log4cxx 或Log4Qt。这是因为它们都是从Java著名的日志框架Log4j移植过来的,并且保持了一致的API。
Log4j 允许您:
控制日志输出格式,定义日志信息的级别以对日志生成过程进行细粒度控制,并控制日志信息的输出位置,例如输出到文件、控制台或数据库。这一切都可以通过配置文件灵活控制,无需更改源代码。
使用Log4j系列的最大优点是,一旦你熟练了一个,你就可以轻松学习其他的。即使语言环境不同,结构上也没有太大差异,非常容易使用。
那里有很多衍生产品,但我最终选择Log4Qt 的原因很简单。我的第一个身份是Qter。其实,选择哪一个并不重要,因为它们都来自同一家公司,你将主要学习Log4j的概念。
Log4Qt 简介
Log4Qt 是Apache Log4j 的Qt 移植版本,主要用于日志记录。
由于Log4Qt是基于Qt编写的,因此它也继承了Qt的跨平台特性。这意味着它可以在Windows、Linux 和MacOS 平台上使用。
主页:http://log4qt.sourceforge.net 文档:http://log4qt.sourceforge.net/html/index.html Log4Qt 的开发于2009 年结束,因此官网提供的源代码仅支持Qt4。
对于Qt4:https://sourceforge.net/projects/log4qt 但值得庆祝的是有人提供了与Qt5 兼容的版本。
对于Qt5:https://github.com/MEONMedical/Log4Qt 这个升级版本不仅允许您将Log4Qt源代码添加到您的项目中,还可以将其编译成库,并且还支持CMake和qmake。
最重要的是它不断升级,在旧版本(针对Qt4)的基础上添加了很多新功能。
Log4Qt 分层架构
Log4Qt API 设计为分层结构,每一层提供执行不同任务的不同对象。这种设计为未来的开发提供了良好的可扩展性。
Log4Qt 对象分为:
核心对象:使用框架所必需的基本对象。支持对象:帮助核心对象完成重要任务。
核心对象:
Logger对象:位于顶层,负责捕获日志信息。 Appender对象:将日志信息输出到控制台、文件、数据库等各种输出目的地。布局对象:用于控制日志输出格式,该层帮助以可读的格式记录信息。支持的对象:
Level对象:定义日志信息的优先级:TRACE DEBUG INFO WARN ERROR FATAL。 LogManager:负责从配置文件或配置类中读取初始配置参数。 Filter对象:用于分析日志信息,进一步判断是否应该记录信息。 ObjectRenderer:用于为传递的各种Logger 对象提供字符串表示(尚未在Log4Qt 中使用)。下载并解压
编译 Log4Qt
Log4Qt(适用于Qt5)。目录结构如下:
可以看到,同时支持 CMake 和 qmake。其中,src 是需要特别关注的目录,里面包含了 Log4Qt 的所有源码。
由于代码结构干净,编译Log4Qt(以Windows 为例)非常容易。
使用Qt Creator 打开log4qt.pro。运行qmake -build。如果成功,会在build目录下生成log4qt.lib、log4qt.dll以及相应的示例程序。
配置 Log4Qt
使用Log4Qt 有两种方法:将Log4Qt 源代码添加到您的项目中,或者将其用作第三方库。
将 Log4Qt 源码添加至项目中
Log4Qt-master/src/log4qt目录包含一个非常重要的文件log4qt.pri,通过它您可以轻松地将Log4Qt源代码添加到您的项目中。
只需将以下设置添加到您的.pro(您自己的项目文件)中。
将 Log4Qt 作为第三方库使用
如上所述,当您编译Log4Qt时,会生成相应的库。因此,如果你想将其用作第三方库,它也非常有用。
只需将以下设置添加到您的.pro(您自己的项目文件)中。
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83797.html