您好,登錄后才能下訂單哦!
QSettings中怎么對Log4Qt進行配置 ,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在 Log4Qt 的初始化過程中,除了會使用環境變量之外,它還會通過 QSettings 讀取配置。也就是說,在使用 Logger 之前,需要針對 QSettings 做一些基本設置:
組織名和應用名:通過 QCoreApplication::setOrganizationName() 和 QCoreApplication::setApplicationName() 指定,并且這些名稱需要能被 QSettings 找到。
分組:需要有一個名為 Log4Qt 的分組,在這個組下面還要有一個子組 Properties。
配置內容:需要符合 Log4Qt 配置語法規則。
在 Windows 中,可以在注冊表中添加相應的配置。例如,路徑:計算機\HKEY_CURRENT_USER\SOFTWARE\MyOrganisation\MyApplication\Log4Qt\Properties:
當然,手動添加比較麻煩。有一個簡單的辦法,就是下面所說的用程序設置 - setupLog4Qt()。
為了實現這個功能,可以自定義 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進行配置 的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。