Log4Qt使用---自定义输出位置

6、Qt—Log4Qt使用小记1 Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C ++端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apache Log4J 的Qt移植版,Log4Qt主要是用来记录日志(有助于程序调试)。Logger提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。Logger间存在隶属关系,有一个Logger称为根Logger。Appender。 阅读详情
Log4Qt的一个强大之处在于可以把log同时记录到不同地方,可以是文件、终端和数据库等等,这里介绍如何把log4qt的log记录输出到一个窗口,输出到其他地方也类似。
主要是继承Log4Qt::AppenderSkeleton重新实现里面的几个虚函数。
  1. #ifndef LOGVIEW_H
    #define LOGVIEW_H
    class QTextBrowser;
    /*! \brief root::LogView
            \author Wang Bin <[email]wbsecg1@gmail.com[/email]>
            \version 0.01
            \date 2011.08.03

            Log信息显示窗口。
    */
    class LogView : public QWidget
    {
            Q_OBJECT
            LOG4QT_DECLARE_QCLASS_LOGGER
    public:
            LogView(QWidget *parent = 0);
            QTextBrowser *view() const {return mView;}
    public slots:
            void appendLog(const QString &pMessage);
    private:
            QMutex mMutex;
            QTextBrowser *mView;
    };
    class LogViewAppender : public Log4Qt::AppenderSkeleton
    {
        Q_OBJECT
    public:
            LogViewAppender(QObject *pParent = 0);
            ~LogViewAppender();
    signals:
            void OnMessageAppend(const QString& msg);
    protected:
            virtual bool requiresLayout() const;
            virtual void append(const Log4Qt::LoggingEvent &rEvent);
    #ifndef QT_NO_DEBUG_STREAM
            virtual QDebug debug(QDebug &rDebug) const;
    #endif //QT_NO_DEBUG_STREAM
    private:
            LogView *mLogView;
    };
    #endif // LOGVIEW_H




  1. #include "logview.h"
    #include <QtCore/QDebug>
    #include <QtGui/QTextBrowser>
    #include <QtGui/QLayout>
    LogView::LogView(QWidget* parent)
            :QWidget(parent)
    {
            QVBoxLayout *vlayout = new QVBoxLayout;
            setLayout(vlayout);
            qRegisterMetaType<QTextCursor>("QTextCursor");
            mView = new QTextBrowser(this);
            vlayout->addWidget(mView); 
            showMaximized();
    }
    void LogView::appendLog(const QString &pMessage)
    {
            QMutexLocker lock(&mMutex);
            //QString msg = pMessage.trimmed();
            //mView->append(msg);
            mView->insertPlainText(pMessage);
            mView->moveCursor(QTextCursor::End);
            mView->ensureCursorVisible();
    }
    LogViewAppender::LogViewAppender(QObject *parent) :
            Log4Qt::AppenderSkeleton(parent),mLogView(NULL)
    {
    }
    LogViewAppender::~LogViewAppender()
    {
            if (mLogView) {
                    mLogView->close();
                    mLogView = NULL;
            }
    }
    bool LogViewAppender::requiresLayout() const
    {
            return true;
    }
    void LogViewAppender::append(const Log4Qt::LoggingEvent &rEvent)
    {
            Q_ASSERT_X(layout(), "LogViewAppender::append()", "Layout must not be null");
            QString message(layout()->format(rEvent));
            emit OnMessageAppend(message);
            /*if (!mLogView) {
                    mLogView = new LogView;
            }
            mLogView->show(); //
            mLogView->appendLog(message);*/
    }
    #ifndef QT_NO_DEBUG_STREAM
    QDebug LogViewAppender::debug(QDebug &rDebug) const
    {
            return rDebug.space();
    }
    #endif //QT_NO_DEBUG_STREAM




  1. bool InitializeLog4QtView(LogView *widget)
    {
            Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();
            LogViewAppender *viewappender = new LogViewAppender;
            viewappender->setName("ViewAppender");
            Log4Qt::TTCCLayout *viewlayout = new Log4Qt::TTCCLayout(Log4Qt::TTCCLayout::ISO8601);
            viewlayout->setThreadPrinting(true);
            viewappender->setLayout(viewlayout);
            viewappender->activateOptions();
            logger->addAppender(viewappender);
            QObject::connect(viewappender, SIGNAL(OnMessageAppend(QString)), widget, SLOT(appendLog(QString)));
            return true;
    }
    bool FinalizeLog4Qt()
    {
            Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();
            logger->removeAllAppenders();
            return true;
    }
Qt下的Log记录库 log4qt 但凡稍许有些规模的软件系统,都需要一个事件记录系统,将各类调试或者错误信息输出到文件或者控制台上,特别是软件发布后,很多情况下开发人员只需要凭借事件记录就可以诊断软件故障所发生的位置。我目前使用Qt所开发的一款系统也不例外,不过一开始我使用了一个自己写的Log记录用的全局类,直接将各类要记录的信息写入到文本文件中,简单归简单不过也足够使用了,因此我也从没想过要真正将它完善。直到最近忽然兴起,决心用 阅读详情

相关推荐

ubuntu-24.04.1-desktop 中的 QT6.7 QtCreator 中集成 log4qt

地址:https://github.com/MEONMedical/Log4Qt 源码位置:log4qt 库的src目录下的log4qt文件夹 我是通过共享文件夹将Wiindows下的源码复制到 ubuntu 中的 network : 提供网络功能 concurrent : 提供多线程和并发编程的支持 3.2.2 静态链接 Log4Qt 告诉编译器,我们是用静态链接的方法将Log4Qt 库的代码编译并链接到最终的可执行文件中 3.2.3 设置 LOG4QTSRCPATH $$PWD 是一

weixin_41245990的博客 1121

log4qt qt使用日志系统

第一次使用log4qt日志系统,之前没有使用过log4j,log4cplus等,简单的记录下使用过程。 log4qt是Apache的log4j的qt移植版本,log4j是在java下面使用的一个超强大的日志系统,只要引起一个包一句代码就可以使用,做java开发的小伙伴应该都不陌生。 log4qt是一些大牛参考log4j整理的一套在C++上使用的日志系统,使用参考log4j的使用,log4qt是开...

活到老、学到老 1万+

Log4Qt 输出重定向(控制台)

Log4Qt 支持自定义输出,格式化由 Layout 完成,输出地则由 Appender 控制。Appender 表示将日志输出到什么地方,常见的 Appender 有控制台、文件、数据库等。

青春不老,奋斗不止! 1926

log4Qt史上最详细介绍、编译和使用

Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C ++端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的(因为 Log4Qt的直接资料太少了)。Log4Qt主要是用来记录日志(有助于程序调试)。1、Logger提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。

波风水门 8980

Log4Qt 基本介绍

在项目开发过程中,离不开代码的调试、Bug 的追踪,这时日志便显得尤为重要。

青春不老,奋斗不止! 2247

使用 log4qt.properties 配置 Log4Qt

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

青春不老,奋斗不止! 2075

Qt日志库Log4Qt的使用,支持文件名/行号/函数名的log打印输出

下载地址 https://github.com/MEONMedical/Log4Qt 参考博客 Qt开发笔记:log4Qt介绍、编译和使用 Log4Qt的基本使用 姊妹篇 《Qt日志重定向qInstallMessageHandler,输出至文件及网络》 --- ...

$firecat利白的代码足迹$ 4130

电赛控制-----经验分享

1.赛前准备 先简单介绍一下电赛。电赛是两年一届,单数年是大电赛,全称是全国大学生电子设计大赛,之前由瑞萨电子赞助,所以之前也叫瑞萨杯,从19年开始赞助方变成了TI公司,偶数年是小电赛,全称是“TI杯”模电邀请赛,(这里不得不提TI公司的实力是愈来愈大了),一般来说小电赛的含金量会略低于大电赛,而且对与想拿国奖的同学来说还是要参加大电赛,因为小电赛一般每个学校会限制只有两个队伍进国赛,而大电赛是没有这个限制的,而且我们学校电赛保研的话,大电赛只要求国二,而小电赛只有国一才可以保,这样难度就增加了很多。..

qq_35656655的博客 1万+

Log4Qt

Log4Qt 使用简介 没用过Log4J和Log4CXX,初次接触Log4Qt,还真有点头昏脑胀,无论如何,先简单记录一下。Log4Qt Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的(因为Log4Qt的直接资料太少了)。Log4Qt主要是用来记录日志(有助于程序调试)。有3个主要的组件: Logger 提供日志记录服务,可以有

xzh_blue的专栏 881

光伏5G多合一融合终端|光伏多合一融合终端|光伏多合一群调群控网关|分布式光伏群控群调|光伏AGC/AVC系统这几者之间什么技术关系,多少钱一套预算?

RCL-0923光伏电站电压\功率自动控制装置(光伏AVC/AGC),能够接收调度DMS下发的调节目标(电压或无功),按既定策略的调节目标计算光伏电站无功功率出力需求,支持总有、无功,最大可调范围、逆变器个数等数据的上送,通过选择控制设备并进行无功功率出力分配,并将最终控制指令自动下达给被控制设备,最终实现光伏电站无功功率控制,实现无功功率、并网点电压的监测和控制,跟踪调度中心下发的电压或无功调节目标值,实现分布式电源的可观可测,可调可控。光伏5G多合一融合终端的功能:群调群控/AGC/AVC功能。

分布式DTU物联网DTU 2604

实战分享:如何利用svchost进程绕过360防护(附完整Shellcode注入教程)

本文深入解析系统进程安全防护机制,探讨svchost等关键进程的安全特性与防护策略。详细分析安全软件的行为检测和内存保护技术,提供系统加固与监控实践建议,助力企业构建多层次防御体系,有效应对潜在安全威胁。

weixin_30752699的博客 99

6、Qt使用Log4Qt日志

Qt使用Log4Qt日志

Viciower的博客 3622

视频编解码——视频编解码器工作原理

目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史 什么是视频编解码器 简单来说就是用于压缩或解压数字视频的软件或硬件 编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。 适用于视频 编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。 解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。 为什么需要视屏编解码器 需要在有限的带宽或存储空间

路人coder 1万+

log4qt库的使用

log4qt库的使用

敖丙007的博客 3743

UnityWebGL异常捕获全攻略:从报错提示到完美解决的3种配置方案

本文详细解析了UnityWebGL项目中异常捕获的三种核心配置方案:禁用异常、仅捕获显式异常以及完全捕获异常(无堆栈跟踪)。通过对比不同方案在构建体积、运行性能及错误信息详细度上的差异,帮助开发者根据开发、测试与发布阶段的不同需求,选择并配置最优的异常处理策略,从而有效提升WebGL应用的调试效率和线上稳定性。

5f4d3s2a1q的博客 398

智能车图像处理24-进阶篇16--三叉路口的判断

这篇文章主要讲述图像处理中如何判断三叉路口并进行补线操作。

taiyuezyh的博客 1万+

Log4Qt 使用

Log4Qt 使用

康林工作室 2367

2025美赛E题为农业留出空间(附代码+全保姆教程)Making Room for Agriculture

有机农业的核心在于减少化学投入,促进自然控制和可持续性。变量定义CCC: 作物种群III: 害虫种群PPP: 天然捕食者种群(蝙蝠、鸟类等)BBB: 生物多样性水平(以种类数量表示)SSS: 土壤健康指数(影响植物繁殖与作物生长)EEE: 农业生态系统的整体稳定性。

博客 1494

深入浅出之Log4Qt的API

Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C ++端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的(因为 Log4Qt的直接资料太少了)。核心组件。

浩瀚之水的专栏 971

10分钟搞定manim安装与vscode配置

manim安装与vscode配置

帅帅de三叔 3411

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Log4Qt使用相关使用

简介 前一段时间用过log4Qt,只是零零散散的使用了。没有仔细的深究。抱着能用就行的心态终于遇到坑了。在网上也没有系统的介绍Log4Qt的文章。现在系统介绍下。希望对自己和别人有所帮助。log4Qt是根据Apache的log4j修改过来的,所有里面用的时候也会有jave的影子。需要详细的学习的同学可以搜说log4j的资料。因为log4Qt的资料太少太少了。 log...

Mario_z的博客 1245

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

在Qt5中简单使用log4qt

log4qt的源码 for Qt5:下载 用qt creator打开已下载的log4qt.pro,编译生成动态库log4qt.dll 开始使用 新建工程在pro文件中添加 # Add Log4qt libary INCLUDEPATH += $$PWD/lib/log4qt/src LIBS += -L$$PWD/lib/log4qt/lib -llog4qt 其中lib中放着log4qt...

__不白也不黑的博客 3217

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

带你了解log4qt日志库,一篇log4qt日志库的总结

log4qt你有使用过吗?来看一遍简短的log4qt的使用说明吧!相信你一定会有所收获!

sinat_28294665的博客 2801

日志系统之log4qt

Log4Qt是一个基于Qt的日志库,它是Apache Log4j的Qt移植版,主要用于Qt应用程序的日志记录。

浩瀚之水的专栏 1243

QT使用log4cpp日志库

QT使用log4cpp日志库

m0_68312479的博客 2435
上一篇: Qt5.0编译指南(VisualStudio2010)
下一篇: QThread信号深入挖掘
獠
獠
博客等级 码龄16年 43粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值