Russian Qt Forum
Ноябрь 21, 2017, 03:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Лог приложения  (Прочитано 464 раз)
maria123252
Новичок

Offline Offline

Сообщений: 25


Просмотр профиля
« : Сентябрь 08, 2017, 15:45 »

Подскажите, пожалуйста, понятным примером, как реализовать логирование приложения с несколькими типами ошибок. При этом лог нужно отображать на экране и писать в файл, путь сохранения файла известен.
Записан
Bepec
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 7591


W7 x64, Qt SDK 4.7.2, Руки v1.5


Просмотр профиля
« Ответ #1 : Сентябрь 08, 2017, 17:49 »

Код:
QString error = "error";
QString errorType = "main";
QFile file("log");
file.open(QIODevice::Append);
file.write(errorType + " : " + error );
file.close();

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

"Мастер простых решений" Ɋt

чОрный список: Spark
titan83
Самовар
**
Online Online

Сообщений: 195


Просмотр профиля
« Ответ #2 : Сентябрь 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, там уже можно делать все, что угодно с сообщением.
« Последнее редактирование: Сентябрь 10, 2017, 18:25 от titan83 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.046 секунд. Запросов: 22.