Russian Qt Forum

Qt => Общие вопросы => Тема начата: maria123252 от Сентябрь 08, 2017, 15:45



Название: Лог приложения
Отправлено: maria123252 от Сентябрь 08, 2017, 15:45
Подскажите, пожалуйста, понятным примером, как реализовать логирование приложения с несколькими типами ошибок. При этом лог нужно отображать на экране и писать в файл, путь сохранения файла известен.


Название: Re: Лог приложения
Отправлено: Bepec от Сентябрь 08, 2017, 17:49
Код:
QString error = "error";
QString errorType = "main";
QFile file("log");
file.open(QIODevice::Append);
file.write(errorType + " : " + error );
file.close();

PS ну и использовать либо сигналы, либо сигнлтон для доступа к объекту логирования.


Название: Re: Лог приложения
Отправлено: titan83 от Сентябрь 10, 2017, 18:23
а я использую qDebug(), qWarning(), etc.
Код:

void onLogMessage(QtMsgType, const QMessageLogContext &context, const QString &msg)
{
    static QMutex mutex;
    QMutexLocker lock(&mutex);
    fprintf(stderr, "%s: %s\n", context.category, msg.toLocal8Bit().constData());
    if (MainWindow::s_textEdit != 0)
        MainWindow::s_textEdit->append(context.category + QString(": ") + msg);
    //тут же можешь сохранять в файл.
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QCoreApplication::setApplicationVersion("0.008");

    qInstallMessageHandler(onLogMessage);

    MainWindow w;
    w.show();

    return a.exec();
}
ну и любом месте приложения пишешь:
Код:
qDebug()<<"Это отладочная информация";
Код:
qFatal()<<"Все пропало, шеф";

Плюс в том, что не надо сигналов-слотов, все попадает в функцию onLogMessage, там уже можно делать все, что угодно с сообщением.