2013-06-25 30 views
12

我正在做一些關於Qt 5.0 Logging的研究,它似乎內置了用於日誌記錄的類。我無法找到一個例子。我找到了我認爲與此相關的課程。QT 5.0 - 內置記錄功能?

QMessageLogger

QMessageLogContext

我可以看到大致如何創建從文檔的QMessageLogger對象,但我怎麼能建立一個日誌文件,並追加到它?

+1

你是什麼意思的「追加到它」? – 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