使用?log4qt.properties 配置?Log4Qt
作者丨Waleon
來源丨高效程序員
1
配置文件
在 Log4Qt 的初始化過程中,除了會(huì)使用環(huán)境變量、QSettings 之外,它還會(huì)通過默認(rèn)的配置文件進(jìn)行配置。對于這個(gè)默認(rèn)配置文件,Log4Qt 要求:
文件名:為 log4qt.properties;
文件內(nèi)容:需要符合 Log4Qt 配置語法規(guī)則;
文件所在位置:必須位于可執(zhí)行程序(*.exe)的同級目錄。
注意:如果有其中一條不滿足,Log4Qt 就無法使用默認(rèn)文件進(jìn)行正常的初始化!
默認(rèn)配置文件看上去限制比較多,當(dāng)然如果你愿意,也完全可以通過 PropertyConfigurator::configure() 或者 PropertyConfigurator::configureAndWatch() 自由指定配置文件的名稱和所在路徑。
一個(gè)簡單的配置文件,如下所示:
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.properties 和 log4qt.conf 都使用了這個(gè)配置。
這個(gè)配置主要針對 rootLogger,通過它,我們可以將日志記錄追加至 logger.log 文件中。
2
使用默認(rèn)配置文件
為了驗(yàn)證這個(gè)過程,編寫一個(gè)簡單的程序:
// 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è),沒有 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),我們的便可以很靈活地對程序進(jìn)行控制。但倘若要修改配置文件的名稱或者所在路徑,這時(shí)該怎么辦?
可以通過下述方式快速地進(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 中沒有 log4qt.conf 這個(gè)配置文件,在運(yùn)行程序時(shí),便不會(huì)有日志文件和任何的消息輸出。
現(xiàn)在,將 log4qt.conf 拷貝至 AppConfigLocation 目錄下,再次運(yùn)行程序:

和上面一樣,這也生成了一個(gè)日志文件 logger.log,并且日志記錄也被成功的追加進(jìn)去了。
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

面試題】即可獲取