crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Вывод отладочной информации, централизованно, аля qDebug, qCritical и ...
balbes
  опции профиля:
сообщение 25.10.2007, 16:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 62
Регистрация: 11.10.2007
Пользователь №: 10

Спасибо сказали: 0 раз(а)




Репутация:   0  


Нужно выводить отладочную информацию в файл, но на данный момент у меня натыкано очень много qDebug'ов и qCritical'ов, который соответственно выводят на консоль. Выходом из сложившейся ситуации, вижу только написание синглтона, и замену qDebug'ов и qCritical'ов на вызов соответствующих методов из него.

Может можно это сделать как-то красивее? А то менять очень и очень много нужно... :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ubuntu
  опции профиля:
сообщение 25.10.2007, 16:53
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 32
Регистрация: 10.10.2007
Пользователь №: 9

Спасибо сказали: 0 раз(а)




Репутация:   0  


Используй qInstallMsgHandler( fnc);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
balbes
  опции профиля:
сообщение 25.10.2007, 16:55
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 62
Регистрация: 11.10.2007
Пользователь №: 10

Спасибо сказали: 0 раз(а)




Репутация:   0  


Непонятно, как это относится к моей проблеме, пример можно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 25.10.2007, 16:59
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Примерно так:
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>

void myMessageOutput(QtMsgType type, const char *msg)
{
     switch (type) {
     case QtDebugMsg:
         fprintf(stderr, "Debug: %s\n", msg);
         break;
     case QtWarningMsg:
         fprintf(stderr, "Warning: %s\n", msg);
         break;
     case QtCriticalMsg:
         fprintf(stderr, "Critical: %s\n", msg);
         break;
     case QtFatalMsg:
         fprintf(stderr, "Fatal: %s\n", msg);
         abort();
     }
}

int main(int argc, char **argv)
{
     qInstallMsgHandler(myMessageOutput);
     QApplication app(argc, argv);
     // ...
     return app.exec();
}


Пример взят отсель: qInstallMsgHandler
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
balbes
  опции профиля:
сообщение 25.10.2007, 17:09
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 62
Регистрация: 11.10.2007
Пользователь №: 10

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, то что доктор прописал... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CodeHunter
  опции профиля:
сообщение 23.9.2010, 12:21
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.8.2010
Пользователь №: 1982

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(ViGOur @ 25.10.2007, 16:59) *
Примерно так:
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>

void myMessageOutput(QtMsgType type, const char *msg)
{
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s\n", msg);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s\n", msg);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s\n", msg);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s\n", msg);
abort();
}
}

int main(int argc, char **argv)
{
qInstallMsgHandler(myMessageOutput);
QApplication app(argc, argv);
// ...
return app.exec();
}


Сегодня я уже второй рас вижу плохой пример !! ))) ну ничего у ViGOur есть и куча други хороших примеров !

Так вот если посмотреть в доки то там можно увидеть такое :
Цитата
QDebug::QDebug ( QIODevice * device )
Constructs a debug stream that writes to the given device.


Значит если создать обект класа QDebug и в конструктор передать указатель на QFile , то все что ты перенаправлял на консоль будет писаться в файл. Осталось ток красиво оформить вывод и вуаля лог готов !!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.9.2010, 13:12
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(CodeHunter @ 23.9.2010, 16:21) *
Осталось ток красиво оформить вывод и вуаля лог готов !!!
ага и весь код переписать, который написан в прошлом году :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 23.9.2010, 13:17
Сообщение #8


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(CodeHunter)
Сегодня я уже второй рас вижу плохой пример !! )))
А я сегодня вижу уже второй некропост от тебя. Ты на дату прежде бы смотрел.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.9.2010, 13:25
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(igor_bogomolov @ 23.9.2010, 17:17) *
уже второй некропост от тебя
я не против подъёма старой темы, лишь бы противоречий не было (как с итератором файлов)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 23.9.2010, 13:55
Сообщение #10


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Litkevich Yuriy)
я не против подъёма старой темы, лишь бы противоречий не было (как с итератором файлов)
Я в общем то тоже, если только это делается с целью уточнения ответа.
Здесь же опять не понятно, чем этот комментарий мог бы помочь автору темы
Цитата(balbes)
у меня натыкано очень много qDebug'ов и qCritical'ов
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 8:02