आपको qInstallMsgHandler
फ़ंक्शन का उपयोग करके एक संदेश हैंडलर स्थापित करना है, और फिर, आप डिबग संदेश को किसी फ़ाइल में QTextStream
लिखने के लिए उपयोग कर सकते हैं । यहाँ एक नमूना उदाहरण दिया गया है:
#include <QtGlobal>
#include <stdio.h>
#include <stdlib.h>
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtInfoMsg:
fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
abort();
}
}
int main(int argc, char **argv)
{
qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
के दस्तावेज़ से लिया गया qInstallMsgHandler
(मैंने केवल टिप्पणियाँ जोड़ी):
उपरोक्त उदाहरण में, फ़ंक्शन myMessageOutput
का उपयोग करता है stderr
जिसे आप किसी अन्य फाइल स्ट्रीम के साथ बदलना चाहते हैं, या फ़ंक्शन को पूरी तरह से फिर से लिखना चाहते हैं!
एक बार जब आप इस फ़ंक्शन को लिखते हैं और इंस्टॉल करते हैं, तो आपके सभी qDebug
(साथ ही qWarning
, qCritical
आदि) संदेश उस फ़ाइल में रीडायरेक्ट हो जाएंगे जो आप हैंडलर में लिख रहे हैं।