2013-06-25 2 views
12

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

QMessageLogger

QMessageLogContext

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

+1

Что вы подразумеваете под "append to it"? – Huy

+0

Я имел в виду журнал в файл, я отредактировал вопрос, чтобы быть более четким. Спасибо за помощь. – rreeves

ответ

33

По умолчанию с помощью 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(); 
} 

ЗАКАНЧИВАТЬ лучшие примеры и explanations here.