QT 5.0-内置日志记录

QT 5.0 - Built in Logging?

本文关键字:日志 记录 内置 QT      更新时间:2023-10-16

我对Qt 5.0日志进行了一些研究,它似乎已经内置了日志类。我很难找到一个例子。我在这里找到了我认为相关的课程。

Q消息记录器

QMessageLogContext

我可以从文档中大致了解如何创建QMessageLogger对象,但如何创建日志文件并附加到它?

默认情况下,使用qDebug()、qWarning()等可以将信息注销到控制台。

#include <QtDebug>
qDebug() << "Hello world!";

QMessageLogger旨在利用特殊的C++宏(如函数、行、文件)

QMessageLogger(__FILE__, __LINE__, 0).debug() << "Hello world!";

在Qt5中,消息记录器在幕后使用,因为qDebug()是一个最终将实例化QMessageLogger实例的宏。所以我只使用正则的qDebug()。

QMessageLogContext包含我认为的"元数据",即qDebug()语句调用的文件、行号等。通常情况下,如果您定义自己的QtMessageHandler(请参阅qInstallMessageHandler()),您会关注日志上下文。

消息处理程序允许对日志记录机制进行更多控制,比如将日志记录信息发送到自定义日志记录服务器,甚至发送到文件。

正如Qt文档中所提供的,创建自定义消息处理程序很简单:

void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
  std::cout << msg.toStdString();
}

在这里查看更好的示例和解释。