2013-06-25 10 views
12

私はQt 5.0のロギングについていくつかの調査をしていましたが、ロギング用のクラスを組み込んでいるようです。私は例を見つけるのが難しいです。私はここに関連すると思う授業を見つけました。QT 5.0 - ログに組み込まれていますか?

QMessageLogger

QMessageLogContext

私は、ドキュメントからQMessageLoggerオブジェクトを作成するために、おおよそどのように見ることができますが、どのように私は、ログファイルを作成し、それに追加することができますか?

+1

「追加する」とはどういう意味ですか? – Huy

+0

私はファイルへのログを意味し、私は質問をより明確に編集しました。助けてくれてありがとう。 – rreeves

答えて

33

デフォルトでqDebug()、qWarning()などを使用すると、情報をコンソールにログアウトすることができます。

QMessageLoggerがqDebugは、()は最終的にマクロであるため、メッセージロガーが背後で使用される特殊なC++のマクロ(例えば機能、ライン、ファイルに)Qt5で

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

を活用するように設計されて

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

QMessageLoggerのインスタンスをインスタンス化します。だから、私は通常のqDebug()を使うだけです。

QMessageLogContextには、qDebug()ステートメントが呼び出されたファイル、行番号などの「メタデータ」と見なされる内容が含まれています。通常は、独自のQtMessageHandlerを定義している場合は、ログコンテキストに関心があります(qInstallMessageHandler()を参照)。

メッセージハンドラを使用すると、カスタムロギングサーバまたはファイルにロギング情報を送信するなど、ロギングメカニズムをより詳細に制御できます。

カスタムメッセージハンドラを作成し、Qtのドキュメントに提供されるようには簡単です:

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

は、より良い例とexplanations hereをチェックしてください。