寫應用程序免不了需要使用日誌來記錄或者調試一些信息,Qt一個這麼大的框架,當然免不了集成了一套日誌輸入的框架,那就是QLoggingCategory 。
廢話不多說,直接說用法:
可能常用的qDebug() qWarning等,但是不推薦,改用:
qCDebug(), qCWarning(), qCCritical()等,爲什麼呢?因爲這系列接口提供了一個額外的參數來指明是哪個模塊的日誌。
比如:
// in a header Q_DECLARE_LOGGING_CATEGORY(driverUsb) // 這個是聲明式(放在頭文件給其他源文件聲明使用) // in one source file Q_LOGGING_CATEGORY(driverUsb, "driver.usb") // 這個是定義式(只定義一次,放在源文件)
// usbEntries() will only be called if driverUsb category is enabled qCDebug(driverUsb) << "devices: " << usbEntries();
這樣打印出來就信息類似於:driver.usb: devices: usbEntries
更重要的是這個日誌可以通過環境變量控制是否打印(只有在啓動的時候檢查,運行以後再設置無效)
環境變量的方式如下:
QT_LOGGING_RULES="*.debug=false;driver.usb.debug=true"
大概可以看出來,日誌分爲debug
, info
, warning
, or critical,4類。
並且可以根據模塊單獨設置多項打印類型。非常的方便。