<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用?log4qt.properties 配置?Log4Qt

          共 4048字,需瀏覽 9分鐘

           ·

          2021-06-18 09:27

          置頂/星標(biāo)公眾號(hào)??,硬核文章第一時(shí)間送達(dá)!


          1

          配置文件


          在 Log4Qt 的初始化過(guò)程中,除了會(huì)使用環(huán)境變量、QSettings 之外,它還會(huì)通過(guò)默認(rèn)的配置文件進(jìn)行配置。對(duì)于這個(gè)默認(rèn)配置文件,Log4Qt 要求:


          • 文件名:為 log4qt.properties

          • 文件內(nèi)容:需要符合 Log4Qt 配置語(yǔ)法規(guī)則;

          • 文件所在位置:必須位于可執(zhí)行程序(*.exe)的同級(jí)目錄。


          注意:如果有其中一條不滿(mǎn)足,Log4Qt 就無(wú)法使用默認(rèn)文件進(jìn)行正常的初始化!


          默認(rèn)配置文件看上去限制比較多,當(dāng)然如果你愿意,也完全可以通過(guò) PropertyConfigurator::configure() 或者 PropertyConfigurator::configureAndWatch() 自由指定配置文件的名稱(chēng)和所在路徑。


          一個(gè)簡(jiǎn)單的配置文件,如下所示:


          logPath=.
          log4j.rootLogger=All, logFile

          log4j.appender.logFile=org.apache.log4j.FileAppender
          log4j.appender.logFile.threshold=INFO
          log4j.appender.logFile.immediateFlush=true
          log4j.appender.logFile.appendFile=true
          log4j.appender.logFile.file=${logPath}/logger.log
          log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
          log4j.appender.logFile.layout.ConversionPattern=%r [%t] %p %c %x - %m%n


          注意:下面的 log4qt.propertieslog4qt.conf 都使用了這個(gè)配置。


          這個(gè)配置主要針對(duì) rootLogger,通過(guò)它,我們可以將日志記錄追加至 logger.log 文件中。



          2

          使用默認(rèn)配置文件


          為了驗(yàn)證這個(gè)過(guò)程,編寫(xiě)一個(gè)簡(jiǎn)單的程序:


          // main.cpp
          #include <QCoreApplication>
          #include <log4qt/logger.h>

          int main(int argc, char *argv[])
          {
              QCoreApplication a(argc, argv);

              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;
          }


          假設(shè),沒(méi)有 log4qt.properties 這個(gè)配置文件。在運(yùn)行程序時(shí),便不會(huì)有任何的消息輸出,也不會(huì)生成相應(yīng)的日志文件。


          現(xiàn)在,將 log4qt.properties 拷貝至可執(zhí)行程序所在目錄下,再次運(yùn)行程序:



          可以看到,日志文件 logger.log 生成了,并且日志記錄也被成功的追加進(jìn)去了。



          3

          自由指定配置文件


          有了默認(rèn)的配置文件(log4qt.properties),我們的便可以很靈活地對(duì)程序進(jìn)行控制。但倘若要修改配置文件的名稱(chēng)或者所在路徑,這時(shí)該怎么辦?


          可以通過(guò)下述方式快速地進(jìn)行配置:


          #include <QCoreApplication>
          #include <QStandardPaths>
          #include <QFile>
          #include <log4qt/logger.h>
          #include <log4qt/propertyconfigurator.h>

          int main(int argc, char *argv[])
          {
              QCoreApplication a(argc, argv);

              QString configLoc = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

              // 用指定的配置文件進(jìn)行配置
              QString configFile = configLoc + "/log4qt.conf";
              if (QFile::exists(configFile))
                  Log4Qt::PropertyConfigurator::configureAndWatch(configFile);

              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;
          }


          注意:配置文件所在路徑可以隨意指定(例如:E:/log4qt.conf)。這里,我們使用了 AppConfigLocation,在 Windows 中,該路徑由 C:/Users/<USER>/AppData/Local/<APPNAME> 表示。


          假設(shè),在 AppConfigLocation 中沒(méi)有 log4qt.conf 這個(gè)配置文件,在運(yùn)行程序時(shí),便不會(huì)有日志文件和任何的消息輸出。


          現(xiàn)在,將 log4qt.conf 拷貝至 AppConfigLocation 目錄下,再次運(yùn)行程序:



          和上面一樣,這也生成了一個(gè)日志文件 logger.log,并且日志記錄也被成功的追加進(jìn)去了。


          往期推薦




          專(zhuān)輯 | 趣味設(shè)計(jì)模式
          專(zhuān)輯 | 音視頻開(kāi)發(fā)
          專(zhuān)輯 | C++ 進(jìn)階
          專(zhuān)輯 | 超硬核 Qt
          專(zhuān)輯 | 玩轉(zhuǎn) Linux
          專(zhuān)輯 | GitHub 開(kāi)源推薦
          專(zhuān)輯 | 程序人生


          關(guān)注公眾號(hào)「高效程序員」??,一起優(yōu)秀!

          回復(fù)“1024”,送你一份程序員大禮包。
          瀏覽 328
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人黄色视频网站免费观看 | 成人 免费视频A片视频88p | 六区九区一区在线 | 欧美日韩毛| 青娱乐无码在线视频 |