本文转载自微信公众号「高效程序员」,作者Waleon。转载本文请联系高效程序员公众号。

在 Log4Qt 的初始化过程中,除了会使用环境变量之外,它还会通过 QSettings 读取配置。也就是说,在使用 Logger 之前,需要针对 QSettings 做一些基本设置:
在 Windows 中,可以在注册表中添加相应的配置。例如,路径:计算机\HKEY_CURRENT_USER\SOFTWARE\MyOrganisation\MyApplication\Log4Qt\Properties:
当然,手动添加比较麻烦。有一个简单的办法,就是下面所说的用程序设置 - setupLog4Qt()。
为了实现这个功能,可以自定义 QCoreApplication:
- #ifndef MY_APPLICATION_H
 - #define MY_APPLICATION_H
 - #include
 - class MyApplication : public QCoreApplication
 - {
 - Q_OBJECT
 - public:
 - MyApplication(int &argc, char **argv);
 - ~MyApplication();
 - void setupLog4Qt();
 - };
 - #endif // MY_APPLICATION_H
 
在构造函数中,为应用程序设置一些基本信息 - OrganizationName、ApplicationName 以及 OrganizationDomain,以允许 QSettings 能正确的进行读写。
在 setupLog4Qt() 中,我们创建了一个组“Log4Qt/Properties”,并且对 rootLogger 进行了一些简单的配置:
- #include "my_application.h"
 - #include
 - #include
 - MyApplication::MyApplication(int &argc, char **argv)
 - : QCoreApplication(argc, argv)
 - {
 - // 设置应用程序数据,以允许 Log4Qt 初始化读取正确的值
 - setOrganizationName("MyOrganisation");
 - setApplicationName("MyApplication");
 - setOrganizationDomain("https://github.com/Waleon");
 - }
 - MyApplication::~MyApplication()
 - {
 - }
 - void MyApplication::setupLog4Qt()
 - {
 - QSettings s;
 - QStringList groups = s.childGroups();
 - if (!groups.contains("Log4Qt")) {
 - // 将 Log4Qt 的日志级别设置为 INFO
 - s.beginGroup("Log4Qt");
 - s.setValue("Debug", "INFO");
 - // 配置日志输出至文件 logger.log,使用级别 INFO
 - s.beginGroup("Properties");
 - s.setValue("log4j.rootLogger", "INFO, logFile");
 - s.setValue("log4j.appender.logFile", "org.apache.log4j.FileAppender");
 - s.setValue("log4j.appender.logFile.file", "logger.log");
 - s.setValue("log4j.appender.logFile.layout", "org.apache.log4j.TTCCLayout");
 - s.setValue("log4j.appender.logFile.layout.dateFormat", "ISO8601");
 - }
 - }
 
这样一来,通过调用 setupLog4Qt() 就能够设置 Log4Qt 的配置信息了:
- #include
 - #include
 - #include "my_application.h"
 - int main(int argc, char *argv[])
 - {
 - MyApplication app(argc, argv);
 - // 设置配置信息
 - app.setupLog4Qt();
 - // 现在,可以使用 logger 了。
 - Log4Qt::Logger* logger = Log4Qt::Logger::rootLogger();
 - logger->trace("This is a trace message.");
 - logger->debug("This is a debug message.");
 - logger->info("This is a info message.");
 - logger->warn("This is a warn message.");
 - logger->error("This is a error message.");
 - logger->fatal("This is a fatal message.");
 - return 0;
 - }
 
为了更好地说明效果,我们分以下几步进行:
在运行程序之前,打开注册表,这时并不会有 Log4Qt 相关的配置。
第一次运行程序之后,重新打开注册表(或者按 F5 刷新),你会发现 Log4Qt 所需的配置已经生成了,并且会输出日志。
删除或者注释掉 setupLog4Qt() 部分(注册表中的配置已经有了,不需要再次设置了),再次运行程序,依然会输出日志。
根据配置,在运行程序时,会生成一个名为 logger.log 的日志文件:
可以看到,它里面包含了所有的日志记录。
                分享文章:一篇学会使用QSettings配置Log4Qt
                
                网站网址:http://www.csdahua.cn/qtweb/news4/380254.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网