2013-06-25 4 views
12

Je faisais des recherches sur Qt 5.0 Logging et il semble y avoir des classes intégrées pour la journalisation. J'ai du mal à trouver un exemple. J'ai trouvé les cours que je crois pertinents ici.QT 5.0 - Construit dans la journalisation?

QMessageLogger

QMessageLogContext

Je peux voir à peu près comment créer l'objet QMessageLogger de la documentation, mais comment puis-je créer un fichier journal et d'y ajouter du?

+1

Que voulez-vous dire par "append to it"? – Huy

+0

je voulais dire se connecter au fichier, j'ai édité la question pour être plus clair. Merci pour l'aide. – rreeves

Répondre

33

Par défaut, l'utilisation de qDebug(), qWarning(), etc. vous permettra de consigner des informations sur la console.

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

QMessageLogger est conçu pour tirer parti des macros C++ spéciales (par exemple, la fonction, la ligne, le fichier)

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

En QT5 l'enregistreur de message est utilisé dans les coulisses depuis qDebug() est une macro qui finira par instancier une instance de QMessageLogger. Donc, je voudrais juste utiliser le qDebug() habituel. Le QMessageLogContext contient ce que je considère comme des "méta-données", c'est-à-dire le fichier, le numéro de ligne, etc. dont l'instruction qDebug() a été appelée. Normalement, vous vous intéressez au contexte du journal si vous définissez votre propre QtMessageHandler (voir qInstallMessageHandler()). Le gestionnaire de messages permet un meilleur contrôle du mécanisme de journalisation, comme l'envoi d'informations de journalisation à un serveur de journalisation personnalisé ou même à un fichier.

Comme dans la documentation Qt, la création d'un gestionnaire de message personnalisé est simple:

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

Découvrez de meilleurs exemples et explanations here.

Questions connexes