下载log4qt

从github 上下载log4qt的最新源码,在下载的时候需要注意自己使用的Qt版本,如果Qt是低于5.3版本的,请下载这个 qt低于5.3版本如果高于5.3版本的请直接下载地址

编译

编译非常方便,我是直接使用qtCreator打开目录下Log4Qt/log4qt.pro 进行编译的,如果编译过程中有版本判定的错误之类的,修改判断即可

使用qtCreator编译会将.lib和.dll的直接编译出来,我QtCreator配置的编译器msvc2013.生成的目录在Log4Qt/bin 目录下

使用log4qt

  • 在自己的工程中使用log4Qt,直接将Log4Qt/src 目录拷贝到自己的工程目录,在自己工程目录的pro文件添加INCLUDEPATH += ./src,将Log4Qt/bin下的log4qt.dll 和 log4qt.lib拷贝到自己工程目录下,载pro文件增加unix|win32: LIBS += -L$$PWD/ -llog4qt

  • 参考Log4Qt\examples\propertyconfigurator 中的使用方式,将propertyconfigurator.exe.log4qt.properties 文件拷贝自己程序生成目录中,将propertyconfigurator.exe修改成为自己的应用程序名称.

  • 在工程文件中增加一个新的日志类,我这里为了方便将新的日志类写成了单例模式,具体代码参考

loggerFile.h
#ifndef LOGGERFILE_H
#define LOGGERFILE_H

#include <QObject>
#include "log4qt/logger.h"

class loggerFile : public QObject
{
    Q_OBJECT
public:
    static loggerFile* getLoggerFile();

    virtual ~loggerFile();

    void initLoggerFile();

    void loggerInfo(const QString& string);

    void loggerWarning(const QString& string);

    void loggerError(const QString& string);

    void loggerDebug(const QString& string);

    void loggerExit();
signals:

public slots:

private:
    explicit loggerFile(QObject *parent = 0);

};
#endif // LOGGERFILE_H
loggerFile.cpp
#include <QCoreApplication>
#include "log4qt/propertyconfigurator.h"
#include "log4qt/loggerrepository.h"
#include <QScopedPointer>
#include <QStringBuilder>
#include <QString>
#include <QFile>
#include <QDebug>
#include <QDateTime>
#include "loggerFile.h"


using namespace Log4Qt;
loggerFile *loggerFile::getLoggerFile()
{
    static loggerFile *m_loggerFile;
    if(m_loggerFile == nullptr)
    {
        m_loggerFile = new loggerFile();
    }

    return m_loggerFile;
}

loggerFile::~loggerFile()
{
}

void loggerFile::initLoggerFile()
{
    QString configFile = QCoreApplication::applicationFilePath() + QStringLiteral(".log4qt.properties");
    if (QFile::exists(configFile))
    {
        Log4Qt::PropertyConfigurator::configureAndWatch(configFile);
    }
}

void loggerFile::loggerInfo(const QString &string)
{
    auto logger = Log4Qt::Logger::rootLogger();

    logger->info(string);
}

void loggerFile::loggerWarning(const QString &string)
{
    auto logger = Log4Qt::Logger::rootLogger();

    logger->warn(string);
}

void loggerFile::loggerError(const QString &string)
{
    auto logger = Log4Qt::Logger::rootLogger();

    logger->error(string);
}

void loggerFile::loggerDebug(const QString &string)
{
    auto logger = Log4Qt::Logger::rootLogger();

    logger->debug(string);
}

void loggerFile::loggerExit()
{
        auto logger = Log4Qt::Logger::rootLogger();

        logger->info("#####################################################################");
        logger->info(QString("#                EXIT TIME=%1              #").arg(QDateTime::currentDateTime().toString()));
        logger->info("#####################################################################");
        logger->removeAllAppenders();
        logger->loggerRepository()->shutdown();
}

loggerFile::loggerFile(QObject *parent) :
    QObject(parent)
{
    initLoggerFile();
}

在别的模块中使用的时候包含loggerFile.h 头文件,然后直接调用即可loggerFile::getLoggerFile()->loggerError(QString("error"));

在main函数中调用loggerFile::getLoggerFile()->loggerExit();

main.cpp
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    int ret=app.exec();
    loggerFile::getLoggerFile()->loggerExit();
    return ret;
}

如果还有不懂得地方请留言一起讨论。

发表评论

电子邮件地址不会被公开。 必填项已用*标注