Можно ещё через qInstallMsgHandler
C++ (Qt)
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>
#include <QDebug>
void myMessageOutput(QtMsgType type, const char *msg)
{
FILE *file; // указатель на файл, в который пишем
file = fopen("file.log", "a"); // открываем файл на запись
switch (type) {
case QtDebugMsg:
fprintf(file, "Debug: %s\n", msg);
break;
case QtWarningMsg:
fprintf(file, "Warning: %s\n", msg);
break;
case QtCriticalMsg:
fprintf(file, "Critical: %s\n", msg);
break;
case QtFatalMsg:
fprintf(file, "Fatal: %s\n", msg);
abort();
}
fclose(file); // закрываем файл
}
int main(int argc, char **argv)
{
qInstallMsgHandler(myMessageOutput);
QApplication app(argc, argv);
// ...
qDebug() << "Zero";
return app.exec();
}
Пример взят из
документации и немного подправлен (в оригинале все перенаправляется в stderr-поток)