Log4Qt使用笔记(三)

Logger

在前面,我们提到,除了一个根root之外,还可以有多个命名的Logger存在,为了直观,我们可以看LogManager的成员函数:

  • static Logger * logLogger ()
  • static Logger * qtLogger ()
  • static Logger * rootLogger ()
  • static Logger * logger (const QString &rName)

奇怪,除了我们提到的,还有qtLogger和logLogger两个东西存在,这两个是什么东西?原来

马甲

真实身份

作用

qtLogger()

logger("Qt")

用来处理Qt中的qDebug() qWarning ...

logLogger()

logger("Log4Qt")

用来记录该库自身的日志

环境变量

Log4Qt 有4个环境变量:

LOG4QT_DEBUG

控制Log4Qt自身输出日志的级别,前面的logLogger()

LOG4QT_DEFAULTINITOVERRIDE

是否忽略默认的初始化(除"false"外均忽略)

LOG4QT_CONFIGURATION

用来指定初始化用的配置文件,在前文的例子中我们代码中指定的配置文件,也可以在此指定

LOG4QT_CONFIGURATORCLASS

这个东西?在Log4Qt中似乎没有使用(fixme)

继续看例子:

例子四

将前面的例子一,注释掉BasicConfigure

#include <QtCore>
#include "logger.h"
//#include "basicconfigurator.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
// Log4Qt::BasicConfigurator::configure();
    Log4Qt::Logger * log = Log4Qt::Logger::rootLogger();
    log->debug("Hello DbZhang800!");
    log->info("Hello Qt!");
    log->warn("Hello 1+1=2");
    return 0;
}

此时运行程序,将没有任何输出。

F:\bin\> console.exe
F:\bin\>

而如果设置环境变量:

F:\bin>set LOG4QT_CONFIGURATION=F:\bin\log4qt.conf
2011-10-29 19:30:55 [root]-[DEBUG] Hello DbZhang800!
2011-10-29 19:30:55 [root]-[INFO] Hello Qt!
2011-10-29 19:30:55 [root]-[WARN] Hello 1+1=2
F:\bin\>

配置的文件的内容如下:

log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

例子五

接下来看看 LOG4QT_DEFAULTINITOVERRIDE 这个东西有什么用。

同样是前一个例子:如果设置还设置了这个环境变量,结果如何?

F:\bin> set LOG4QT_CONFIGURATION=F:\bin\log4qt.conf
F:\bin> set LOG4QT_DEFAULTINITOVERRIDE=true
F:\bin> console.exe
F:\bin

恩,又没有任何输出了。

只要我们设置了该环境变量,而且其值不是false,那么就会跳过这些初始化文件。

重新起作用,需要设为false

F:\bin> set LOG4QT_DEFAULTINITOVERRIDE=false

或者删除

F:\bin> set LOG4QT_DEFAULTINITOVERRIDE=

初始化

只要前面的 LOG4QT_DEFAULTINITOVERRIDE 没有被设置为flase以外的值,初始化时就会尝试加载默认配置,它找依次尝试3个东西

  • 1. 我们提到的LOG4QT_CONFIGURATION指定的配置文件,如果不存在,则
  • 2. 默认的QSettings 中的 Log4Qt/Properties 中的内容,比如:下面代码设置的东西就可以

     QSettings s;
     s.beginGroup("Log4Qt");
     s.beginGroup("Properties");
     s.setValue("log4j.appender.A1", "org.apache.log4j.FileAppender");
     s.setValue("log4j.appender.A1.file", "F:/bin/myapp.log");
     s.setValue("log4j.appender.A1.layout", "org.apache.log4j.TTCCLayout");
     s.setValue("log4j.appender.A1.layout.DateFormat", "ISO8601");
     s.setValue("log4j.rootLogger", "TRACE, A1");
  • 3. 如果还没找到,则尝试当前工作目录下的 log4qt.properties 文件

还有点什么?

零零散散,随便记录一下,备忘...

实现细节

环境变量在 静态单件对象InitialisationHelper 的初始化时被读取。(对用户透明)

这些值在程序内可以通过

QHash< QString, QString > Log4Qt::InitialisationHelper::environmentSettings ( )         

来获取。对应的key

LOG4QT_DEBUG

Debug

LOG4QT_DEFAULTINITOVERRIDE

DefaultInitOverride

LOG4QT_CONFIGURATION

Configuration

LOG4QT_CONFIGURATORCLASS

ConfiguratorClass

例子六

忘记qDebug()这些东西了,补一个例子

#include <QtCore>
#include "logmanager.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Log4Qt::LogManager::setHandleQtMessages(true);
    qDebug("Hello DbZhang800!");
    qWarning("Hello Qt!");
    qErrnoWarning("Hello 1+1=2");
    return 0;
}

结果如下:

2011-10-29 19:59:10 [Qt]-[DEBUG] Hello DbZhang800!
2011-10-29 19:59:10 [Qt]-[WARN] Hello Qt!
2011-10-29 19:59:10 [Qt]-[ERROR] Hello 1+1=2 ()

采用的前面例子使用的配置文件。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt5中集成log4qt的过程主要包括以下几个步骤: 1. 下载log4qt库:首先需要从log4qt的官方网站或者其他可靠的资源网站下载log4qt的源代码库。将下载的库解压到任意目录下。 2. 添加库到Qt项目:打开Qt Creator,打开需要集成log4qt的项目。在项目的.pro文件中添加log4qt库,可以使用类似于`LIBS += -L/path/to/log4qt -llog4qt`的方式添加。 3. 配置log4qt的头文件和源文件:在Qt Creator中,找到项目目录中的头文件和源文件文件夹,将解压的log4qt库中的包含文件和源文件拷贝到对应的文件夹中。 4. 编译并链接log4qt库:在Qt Creator中,点击编译按钮进行编译,并确保log4qt库能够成功链接到项目中。如果编译或链接出现问题,可以检查是否添加了正确的库路径和库文件。 5. 使用log4qt:在需要使用日志功能的代码文件中,包含log4qt的头文件,并根据需要创建log4qt的日志记录器对象。通过设置日志记录器的级别、格式等参数,可以配置日志的输出方式。 6. 输出日志:使用log4qt的日志记录器对象,可以通过不同的日志级别(如DEBUG、INFO、ERROR等)输出不同等级的日志信息。可以使用log4qt提供的API函数,将日志输出到控制台、文件等不同的目的地。 7. 测试和调试:完成上述步骤后,可以对项目进行测试和调试。在运行项目时,可以根据配置的日志级别,查看和分析log4qt输出的日志信息,以辅助项目的测试和调试工作。 总结起来,集成log4qtQt5项目中的过程包括添加库、配置头文件和源文件、编译链接库、使用log4qt输出日志等步骤。通过正确配置和使用log4qt,可以方便地实现日志功能,从而提高项目的测试和调试效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值