আপনাকে 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
ইত্যাদি) বার্তাগুলি হ্যান্ডলার করা তুমি লেখা ফাইল থেকে আপনাকে পুনঃনির্দেশিত করা হবে।