QT使用第三方库log4qt

QT使用第三方库log4qt

功能介绍

编译使用log4qt第三方库,并将日志记录在log文件中

下载地址

github下载地址:https://codeload.github.com/MEONMedical/Log4Qt/zip/refs/heads/master
CSDN下载地址:https://download.csdn.net/download/wangyijing666/87828381

编译

将下载好的压缩包解压到相应项目目录
使用Qt Creator打开Log4Qt-master的log4qt.pro文件,打开后选择想要的编译器版本进行编译
注意:在这里插入图片描述
右侧每个运行选项都编译或者运行一次,之前我只对第一个basic进行编译,发现调用会一直报错,后来把所有的都运行一遍就可以导入成功

源码融入项目

在项目的pro文件中添加

QT += concurrent //多线程需要该模块

加入编译log4qt文件

# 定义 Log4Qt 源码根目录
LOG4QT_PATH = $$PWD/Log4Qt-master
# 定义所需的宏
DEFINES += LOG4QT_LIBRARY
# 指定编译项目时应该被搜索的 #include 目录
INCLUDEPATH += $$LOG4QT_PATH/src \
               $$LOG4QT_PATH/src/log4qt \
               $$LOG4QT_PATH/include \
               $$LOG4QT_PATH/include/log4qt
# 将 Log4Qt 源代码添加至项目中
include($$LOG4QT_PATH/src/log4qt/log4qt.pri)
include($$LOG4QT_PATH/build.pri)
include($$LOG4QT_PATH/g++.pri)

在需要的代码片段加入


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "logger.h"
#include "basicconfigurator.h"
#include "fileappender.h"
#include "logstream.h"
#include <QTextCodec>
#include <PatternLayout>



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

    
    Log4Qt::BasicConfigurator::configure();
    // 创建一个简单布局
    auto layout = new Log4Qt::PatternLayout("[%d{yyyy-MM-dd HH:mm:ss.zzz}] %c{1} - %p - %m%n");

    // 创建文件 appender
    Log4Qt::FileAppender* fileAppender = new Log4Qt::FileAppender(layout, "output.log");
    fileAppender->setEncoding(QTextCodec::codecForName("UTF-8"));
    fileAppender->setAppendFile(true);
    fileAppender->activateOptions();
    // 获取日志记录器并添加文件 appender
    auto logger = Log4Qt::Logger::rootLogger();
    logger->addAppender(fileAppender);


    // 输出日志信息到文件中
    // 输出日志信息到文件中
//    Log4Qt::LogStream(*logger,Log4Qt::Level::INFO_INT) << "This is an info log message.";
//    Log4Qt::LogStream(*logger,Log4Qt::Level::WARN_INT) << "This is a warning log message.";
//    Log4Qt::LogStream(*logger,Log4Qt::Level::ERROR_INT) << "This is an error log message.";

    try {
        qDebug()<<QThread::currentThreadId()<<QThread::currentThread();
        std::string str = "hello";
        char ch = str.at(20);  // 越界访问字符串
    } catch (const std::exception& e) {
        QString errMsg = "Exception caught: " + QString(e.what());  // 将错误消息转换为 QString 类型
//        log->error(errMsg.toStdString().c_str());  // 写入错误日志
        Log4Qt::LogStream(*logger,Log4Qt::Level::ERROR_INT) << errMsg<<" Thread:"<<QThread::currentThread();
    }

查看log文件发现有捕获到异常并记录

[2023-05-27 16:46:34.411] root - ERROR - Exception caught: invalid string position Thread:0x2a5c3b53660
[2023-05-27 16:46:41.087] LoggerRepository - DEBUG - Shutting down Hierarchy
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值