使用 log4qt.properties 配置 Log4Qt

Posted 一去丶二三里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 log4qt.properties 配置 Log4Qt相关的知识,希望对你有一定的参考价值。

置顶/星标公众号????,硬核文章第一时间送达!

1

配置文件

在 Log4Qt 的初始化过程中,除了会使用环境变量、QSettings 之外,它还会通过默认的配置文件进行配置。对于这个默认配置文件,Log4Qt 要求:

  • 文件名:为 log4qt.properties;

  • 文件内容:需要符合 Log4Qt 配置语法规则;

  • 文件所在位置:必须位于可执行程序(*.exe)的同级目录。

注意:如果有其中一条不满足,Log4Qt 就无法使用默认文件进行正常的初始化!

默认配置文件看上去限制比较多,当然如果你愿意,也完全可以通过 PropertyConfigurator::configure() 或者 PropertyConfigurator::configureAndWatch() 自由指定配置文件的名称和所在路径。

一个简单的配置文件,如下所示:

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 都使用了这个配置。

这个配置主要针对 rootLogger,通过它,我们可以将日志记录追加至 logger.log 文件中。

2

使用默认配置文件

为了验证这个过程,编写一个简单的程序:

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

假设,没有 log4qt.properties 这个配置文件。在运行程序时,便不会有任何的消息输出,也不会生成相应的日志文件。

现在,将 log4qt.properties 拷贝至可执行程序所在目录下,再次运行程序:

可以看到,日志文件 logger.log 生成了,并且日志记录也被成功的追加进去了。

3

自由指定配置文件

有了默认的配置文件(log4qt.properties),我们的便可以很灵活地对程序进行控制。但倘若要修改配置文件的名称或者所在路径,这时该怎么办?

可以通过下述方式快速地进行配置:

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

    // 用指定的配置文件进行配置
    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> 表示。

假设,在 AppConfigLocation 中没有 log4qt.conf 这个配置文件,在运行程序时,便不会有日志文件和任何的消息输出。

现在,将 log4qt.conf 拷贝至 AppConfigLocation 目录下,再次运行程序:

和上面一样,这也生成了一个日志文件 logger.log,并且日志记录也被成功的追加进去了。

往期推荐

☞ 专辑 | 趣味设计模式

☞ 专辑 | 音视频开发

☞ 专辑 | C++ 进阶

☞ 专辑 | 超硬核 Qt

☞ 专辑 | 玩转 Linux

☞ 专辑 | GitHub 开源推荐

☞ 专辑 | 程序人生

关注公众「高效程序员」????,一起优秀!

回复“1024”,送你一份程序员大礼包。

以上是关于使用 log4qt.properties 配置 Log4Qt的主要内容,如果未能解决你的问题,请参考以下文章

使用ceph-deploy安装L版开源存储

Spring5(一-二)

ansible的安装及配置文件更改

SpringBoot01——Framework Introduced and Helloworld

qt .pro文件和cmakelists.txt配置第三方库

Openstack 安装部署指南翻译系列 之 环境配置