23

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

QMessageLogger

QMessageLogContext

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

4

1 回答 1

45

默认情况下,使用 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();
}

在此处查看更好的示例和解释

于 2013-06-25T19:20:50.353 回答