qt控制log输出

1 篇文章 0 订阅

1.安装消息处理程序qInstallMessageHandler

//自定义消息处理函数
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    fprintf(stderr,"%s << ",context.category);

    QByteArray localMsg = msg.toLocal8Bit();
    switch (type) {
    case QtDebugMsg:
        fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtInfoMsg:
        fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtWarningMsg:
        fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtCriticalMsg:
        fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    }
}


int main(int argc, char *argv[])
{
	if(1)
	//安装消息处理函数
    	qInstallMessageHandler(myMessageOutput);
    else
    //更改默认消息处理程序的输出
    	qSetMessagePattern("[%{time yyyyMMdd h:mm:ss.zzz t} \
%{if-debug}D%{endif}\
%{if-info}I%{endif}\
%{if-warning}W%{endif}\
%{if-critical}C%{endif}\
%{if-fatal}F%{endif}] \
%{file}:%{line} - %{message}");

    QApplication a(argc, argv);

    QWidget w;
    w.show();

	return a.exec();
}

2.使用QLoggingCategory启用或禁用log输出

.h文件

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLoggingCategory>


// in a header
Q_DECLARE_LOGGING_CATEGORY(WidgetLog)

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"

Q_LOGGING_CATEGORY(WigetLog, "WigetLog")

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

    qCDebug(WigetLog) << "a debug message";

	//使用setFilterRules启用或禁用log输出
    QLoggingCategory::setFilterRules("WigetLog.debug=false");
    //QLoggingCategory::setFilterRules("WigetLog.*=false");
    //QLoggingCategory::setFilterRules("*.debug=false");
    //QLoggingCategory::setFilterRules("*=true");

    qCDebug(WigetLog) << "a debug message";
    qCInfo(WigetLog) << "a debug message";
    qDebug() << "abcdset";
}

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

3.使用配置文件QT_LOGGING_CONF宏

在工程的.pro中添加

QT_LOGGING_CONF=./logconfig.ini

logconfig.ini文件

[Rules]
*=false
WigetLog.debug=true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: log4cplus_qt5是一个针对Qt5框架集成的log4cplus日志库。 log4cplus是一个C++编写的开源日志库,用于提供灵活和高效的日志记录功能。它可以将日志输出控制台、文件、远程服务器等多个目标,并且支持多级日志输出、日志滚动管理、格式化输出等功能。 在Qt5框架下使用log4cplus_qt5可以方便地与Qt的信号槽机制进行集成。它提供了一个自定义的Qt信号槽接口,使开发者可以在代码中使用简单的语法来记录和处理日志信息。通过这种方式,可以提高代码的可读性和可维护性,同也能够更加灵活地控制日志记录的行为。 使用log4cplus_qt5的基本步骤如下: 1. 在Qt项目中添加log4cplus_qt5的头文件和库文件,可以通过命令行或者图形界面进行设置。 2. 在代码中创建log4cplus_qt5的日志对象,通过配置文件或者代码设置日志的输出格式、日志级别等参数。 3. 在需要记录日志的地方,使用log4cplus_qt5提供的接口来输出日志信息。可以根据需求设置不同的日志级别,以及自定义的日志格式。 4. 可以根据需要将日志信息输出控制台、文件、远程服务器等不同的目标。 5. 可以通过信号槽机制实现在特定条件下触发日志记录或者日志处理的逻辑。 总之,log4cplus_qt5是一个方便、灵活且高效的日志库,可以帮助Qt开发者进行日志记录和处理的工作。无论是在开发过程中进行调试,还是在发布后进行错误分析和性能优化,log4cplus_qt5都将是一个不可或缺的工具。 ### 回答2: log4cplus_qt5,是一个集成了log4cplus和Qt5框架的日志记录工具。log4cplus是一个功能强大的C++日志记录库,可以用于在应用程序中记录各种信息,如调试信息、错误信息等。而Qt5是一个跨平台的应用程序开发框架,提供了丰富的功能和工具,使开发者能够轻松创建高质量的界面和应用程序log4cplus_qt5的目的是为了方便开发者在使用Qt5框架开发应用程序,集成log4cplus进行日志记录。通过log4cplus_qt5,开发者可以轻松地在Qt5应用程序中使用log4cplus的功能,进行日志的记录和管理。 使用log4cplus_qt5,开发者只需要在Qt5应用程序中引用log4cplus_qt5的相关库,并进行简单的配置即可开始使用。开发者可以根据自己的需求,选择合适的日志级别,定义日志输出格式,将日志记录到文件或者其他的目标。 log4cplus_qt5支持多线程环境下的并发访问,可以确保在多线程应用程序中,对日志的记录和输出不会产生竞争条件。同,开发者也可以利用log4cplus_qt5的功能,对日志进行过滤、分类和分级管理,更加方便地进行日志的查看和分析。 总之,log4cplus_qt5是一个方便易用的日志记录工具,可以帮助开发者在Qt5应用程序中轻松集成log4cplus库,并进行日志的记录和管理。它的强大功能和稳定性,为开发者提供了一个可靠的日志解决方案,使得开发者能够更加高效地进行应用程序的开发和维护。 ### 回答3: log4cplus_qt5是一个用于在Qt5应用程序中进行日志记录的开源库。它结合了log4cplus和Qt5的功能,提供了一个强大而灵活的日志记录解决方案。 log4cplus是一个功能强大的C++日志记录库,可以用于跟踪应用程序的运行状态。它支持多种日志级别,如调试、信息、警告和错误,可以根据需要动态设置日志级别。log4cplus还支持将日志保存到不同的目标,比如文件、控制台和网络等,方便进行日志的收集和分析。此外,log4cplus还支持日志滚动,可以自动切换日志文件,避免日志文件过大造成的问题。 而Qt5是一套跨平台的C++开发框架,可以用于开发图形化界面应用程序。它提供了丰富的GUI组件和工具,方便开发者构建功能强大的应用程序。在Qt5中,开发者可以使用信号和槽机制来进行对象间的通信,同还可以使用Qt的多线程支持来进行并发编程。 log4cplus_qt5将log4cplus与Qt5结合起来,使得在Qt5应用程序中进行日志记录变得更加方便。开发者可以使用log4cplus_qt5提供的接口来初始化日志记录器,并设置日志级别和输出目标。一旦设置好了日志记录器,开发者可以在应用程序中通过调用log4cplus_qt5提供的函数来记录日志。记录的日志信息将根据配置保存到指定的目标中。 总之,log4cplus_qt5是一个方便易用的日志记录库,可以帮助开发者在Qt5应用程序中进行日志记录。通过使用log4cplus和Qt5的功能,开发者可以更好地跟踪应用程序的运行状态,并进行相应的调试和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值