QT log4qt 记录日志

一.环境

Qt 5.15.2
log4qt

二.源码

1.编译 log4qt 源码,生成dll文件,并将.h 拷贝至项目目录

在这里插入图片描述
在这里插入图片描述
2.main.cpp

#include "mainwindow.h"

#include <QApplication>
#include <QDir>
#include "Log4Qt/logmanager.h"
#include "Log4Qt/patternlayout.h"
#include "Log4Qt/consoleappender.h"
#include "Log4Qt/dailyfileappender.h"

//终端输出记录
void InitConsoleLog()
{
    QDir dir;
    dir.mkdir(QApplication::applicationDirPath() + "../logs/");

    //Logger:记录器,有一个根Logger,可以有多个其他Logger
    Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();; //根Logger,name为root
    // Log4Qt::Logger *mylog1 = Log4Qt::Logger::logger("Mylog1");  //其他Logger,name为Mylog1的
    logger->setLevel(Log4Qt::Level::DEBUG_INT); //设置日志输出级别
    Log4Qt::LogManager::setHandleQtMessages(true); //处理qt调试输出信息,将qDebug之类的信息重定向,不开启这个qDebug()、qWri

    /****************PatternLayout配置日志的输出格式****************************/
    Log4Qt::PatternLayout *layout = new Log4Qt::PatternLayout();
    layout->setConversionPattern("%d{yyyy-MM-dd hh:mm:ss} [%p] %m %n");
    layout->activateOptions(); // 激活Layout

    /***************************配置日志的输出位置***********/
    //ConsoleAppender:输出到控制台
    Log4Qt::ConsoleAppender *appender = new Log4Qt::ConsoleAppender(layout, Log4Qt::ConsoleAppender::STDOUT_TARGET);
    appender->activateOptions();
    logger->addAppender(appender);

    //DailyFileAppender:每天新建一个文件,保存当天的日志,超过指定的天数,删除最开始的日志
    Log4Qt::DailyFileAppender *dailiAppender = new Log4Qt::DailyFileAppender;
    dailiAppender->setLayout(layout); //设置输出格式
    dailiAppender->setFile("logs/console/console.log"); //日志文件名:固定前缀
    dailiAppender->setDatePattern("_yyyy_MM_dd"); //日志文件名:根据每天日志变化的后缀
    dailiAppender->setAppendFile(true); //true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是false
    dailiAppender->setKeepDays(30); //设置保留天数
    dailiAppender->activateOptions();
    logger->addAppender(dailiAppender);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    InitConsoleLog();
    MainWindow w;
    w.show();
    return a.exec();
}

3.mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>

#include <Log4Qt/logmanager.h>
#include <Log4Qt/patternlayout.h>
#include <Log4Qt/consoleappender.h>
#include <Log4Qt/dailyfileappender.h>
#include <Log4Qt/rollingFileAppender.h>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
private:
    void DebugLogs(QString test);
private:
    Log4Qt::Logger *logger;
private:
    void InitOwnLog();
};
#endif // MAINWINDOW_H

4.mainwindow.cpp


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    DebugLogs("Test Message ");


    InitOwnLog();


    logger->info("Hello !");

    DebugLogs("123456");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::DebugLogs(QString test)
{
    qDebug() << "[" <<  __FILE__  << "][" <<  __FUNCTION__ << "][" << __LINE__ << "] -> " << test;
}

void MainWindow::InitOwnLog()
{
    logger = Log4Qt::Logger::rootLogger();
    logger->setLevel(Log4Qt::Level::INFO_INT); //设置日志输出级别

    /****************PatternLayout配置日志的输出格式****************************/
    Log4Qt::PatternLayout *layout = new Log4Qt::PatternLayout();
    layout->setConversionPattern("%d{yyyy-MM-dd hh:mm:ss} [%p] %m %n");
    layout->activateOptions(); // 激活Layout

    /***************************配置日志的输出位置***********/
    Log4Qt::DailyFileAppender *dailiAppender = new Log4Qt::DailyFileAppender;
    dailiAppender->setLayout(layout); //设置输出格式
    dailiAppender->setFile("logs/ownLogs/ownLogs.log"); //日志文件名:固定前缀
    dailiAppender->setDatePattern("_yyyy_MM_dd"); //日志文件名:根据每天日志变化的后缀
    dailiAppender->setAppendFile(true); //true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是false
    dailiAppender->setKeepDays(30); //设置保留天数
    dailiAppender->activateOptions();
    logger->addAppender(dailiAppender);
}

三.运行

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值