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

          使用環(huán)境變量配置?Log4Qt

          共 3774字,需瀏覽 8分鐘

           ·

          2021-05-15 19:46

          Log4Qt 定義了一系列環(huán)境變量,用于控制初始化過程。這些變量包括:


          變量描述
          LOG4QT_DEBUG控制 LogManager::logLogger() 的日志級別
          LOG4QT_DEFAULTINITOVERRIDE控制 LogManager 在啟動時執(zhí)行的初始化過程
          LOG4QT_CONFIGURATION指定用于初始化的配置文件
          LOG4QT_CONFIGURATORCLASS指定用于初始化的配置類(在 Log4Qt 中,尚未用到)


          下面,來看看這些環(huán)境變量的具體用途。



          1

          使用環(huán)境變量


          現(xiàn)在,編寫一個簡單的程序:


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


          編譯程序,會生成一個可執(zhí)行程序(例如:EnvVarInit.exe)。為了介紹環(huán)境變量,用命令行來運行它:

          > .\EnvVarInit.exe

          >

          很遺憾,這時并沒有任何消息輸出。



          2

          LOG4QT_DEBUG


          LOG4QT_DEBUG 的值指定為 DEBUG,再次運行程序:

          >set LOG4QT_DEBUG=DEBUG

          >.\EnvVarInit.exe

          0 [0x000001b37ae9e030] INFO  Log4Qt::LogManager - Initialising Log4Qt 1.6.0

          125 [0x000001b37ae9e030] DEBUG Log4Qt::LogManager - Program startup time is 2021-05-12 22:26:05.181 (UTC+08:00)

          125 [0x000001b37ae9e030] DEBUG Log4Qt::LogManager - Internal logging uses the level DEBUG

          125 [0x000001b37ae9e030] DEBUG Log4Qt::LogManager - Default initialisation leaves package unconfigured

          你會發(fā)現(xiàn),Log4Qt 內(nèi)部的日志被打印出來了。其中,日志級別最高的是 INFO


          如果不想輸出這些內(nèi)部日志,可以為其指定一個更高的級別(> INFO):

          >set LOG4QT_DEBUG=WARN

          >.\EnvVarInit.exe

          >

          雖然上面有日志輸出,但是它們都是 Log4Qt 的內(nèi)部日志,如何輸出我們自己的日志信息呢?



          3

          LOG4QT_CONFIGURATION


          為了實現(xiàn)這一點,編寫一個名為 log4qt.conf(名稱任意)的配置文件,然后為 rootLogger 進行一些基本配置(日志級別為 INFO,輸出地為控制臺):


          log4j.rootLogger=INFO, console

          log4j.appender.console=org.apache.log4j.ConsoleAppender
          log4j.appender.console.threshold=INFO
          log4j.appender.console.immediateFlush=true
          log4j.appender.console.target=STDOUT_TARGET
          log4j.appender.console.layout=org.apache.log4j.PatternLayout
          log4j.appender.console.layout.conversionPattern=%r [%t] %p %c %x - %m%n


          注意: 配置內(nèi)容在后面會詳細講解,這里先不做過多介紹。


          然后,將該文件指向環(huán)境變量 LOG4QT_CONFIGURATION,并再次運行程序:

          >set LOG4QT_CONFIGURATION=log4qt.conf

          >.\EnvVarInit.exe

          111 [0x000002588505f8a0] INFO root  - This is a info message.

          111 [0x000002588505f8a0] WARN root  - This is a warn message.

          111 [0x000002588505f8a0] ERROR root  - This is a error message.

          111 [0x000002588505f8a0] FATAL root  - This is a fatal message.

          完美,我們的日志被打印出來了。



          4

          LOG4QT_DEFAULTINITOVERRIDE


          緊接著上面,現(xiàn)在設(shè)置環(huán)境變量 LOG4QT_DEFAULTINITOVERRIDE 的值,再次運行程序:

          >set LOG4QT_DEFAULTINITOVERRIDE=true

          >.\EnvVarInit.exe

          >

          What,又沒有任何輸出了!因為一旦將該環(huán)境變量設(shè)置為一個非 false 的值,那么就會跳過這些初始化文件。


          要想重新起作用,需要將其設(shè)置為 false:

          >set LOG4QT_DEFAULTINITOVERRIDE=false

          或者直接刪除:

          >set LOG4QT_DEFAULTINITOVERRIDE=



          5

          實現(xiàn)細節(jié)


          環(huán)境變量在創(chuàng)建 InitialisationHelper 的靜態(tài)初始化期間被讀取,這個過程對用戶來說是透明的。


          這些值可以通過下面的方式來訪問:


          inline QHash<QString, QString> InitialisationHelper::environmentSettings()
          {
              return instance()->mEnvironmentSettings;
          }


          這個接口返回的是一個 QHash,可以根據(jù) key 來獲取相應(yīng)的值。對應(yīng)的 key 為:


          環(huán)境變量key
          LOG4QT_DEBUGDebug
          LOG4QT_DEFAULTINITOVERRIDEDefaultInitOverride
          LOG4QT_CONFIGURATIONConfiguration
          LOG4QT_CONFIGURATORCLASSConfiguratorClass


          到這里,想必大家對這些環(huán)境變量有了一定的了解。至于細節(jié)問題,在后面會詳細分析。


          往期推薦




          趣味設(shè)計模式
          C++ 音視頻開發(fā)
          Qt 硬核指南
          玩轉(zhuǎn) Linux
          GitHub 開源推薦
          程序人生


          關(guān)注公眾號??一起優(yōu)(niu)秀(bi)!

          回復(fù)「1024」,送你一份程序員大禮包。
          瀏覽 103
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  狠狠操狠狠操狠狠操 | 国产黄色电影免费观看 | 美女Aa级| 天天射天天干天天 | 在线亚洲免费视频二 |