QT 5.0 - Встроенный журнал?

Я занимался некоторыми исследованиями в Qt 5.0 Logging и, по-видимому, имел встроенные классы для ведения журнала. У меня возникли проблемы с поиском примера. Я нашел классы, которые, по моему мнению, актуальны здесь.

QMessageLogger

QMessageLogContext

Я могу грубо понять, как создать объект QMessageLogger из документации, но как я могу создать файл журнала и добавить к нему?

Ответ 1

По умолчанию с помощью qDebug() qWarning() и т.д. позволит вам регистрировать информацию на консоли.

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

QMessageLogger предназначен для использования специальных макросов С++ (например, функция, строка, файл)

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();
}

Ознакомьтесь с лучшими примерами и объяснения здесь.