温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

QSettings中怎么对Log4Qt进行配置

发布时间:2021-06-15 11:16:50 来源:亿速云 阅读:246 作者:Leah 栏目:web开发

QSettings中怎么对Log4Qt进行配置 ,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

在 Log4Qt 的初始化过程中,除了会使用环境变量之外,它还会通过 QSettings 读取配置。也就是说,在使用 Logger 之前,需要针对  QSettings 做一些基本设置:

  • 组织名和应用名:通过 QCoreApplication::setOrganizationName() 和  QCoreApplication::setApplicationName() 指定,并且这些名称需要能被 QSettings 找到。

  • 分组:需要有一个名为 Log4Qt 的分组,在这个组下面还要有一个子组 Properties。

  • 配置内容:需要符合 Log4Qt 配置语法规则。

在 Windows  中,可以在注册表中添加相应的配置。例如,路径:计算机\HKEY_CURRENT_USER\SOFTWARE\MyOrganisation\MyApplication\Log4Qt\Properties:

QSettings中怎么对Log4Qt进行配置

当然,手动添加比较麻烦。有一个简单的办法,就是下面所说的用程序设置 - setupLog4Qt()。

1使用 QSettings 配置

为了实现这个功能,可以自定义 QCoreApplication:

#ifndef MY_APPLICATION_H #define MY_APPLICATION_H  #include <QCoreApplication>  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 <log4qt/logger.h> #include <QSettings>  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 <QCoreApplication> #include <log4qt/logger.h> #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进行配置

可以看到,它里面包含了所有的日志记录。

看完上述内容,你们掌握QSettings中怎么对Log4Qt进行配置 的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI