crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> Консоль для вывода log'ов, из чего?
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2009, 16:38
Сообщение #11


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

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

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




Репутация:   94  


я думаю надо просто свой класс сделать, который будет показывать сообщения и точка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Константин
  опции профиля:
сообщение 12.2.2009, 17:39
Сообщение #12


Студент
*

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

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




Репутация:   1  


static QDataStream* clog = 0;

void customMessageHandler(QtMsgType type, const char* msg)
{
    static const char* msgType[] =
    {
        "Debug    : ",
        "Warning  : ",
        "Critical : ",
        "Fatal    : "
    };

    static QTextStream cout(stdout);
    static QTextStream cerr(stderr);

    cerr << msgType[type] << msg << endl;
    if(clog && clog->device())
        *clog << type << msg;
    if(type == QtFatalMsg)
    {
        cerr << "aborting..." << endl;

#if defined(Q_CC_MSVC) && defined(QT_DEBUG) && defined(_CRT_ERROR) && defined(_DEBUG)
        int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
        _CrtSetReportMode(_CRT_ERROR, reportMode);
        int ret = _CrtDbgReport(_CRT_ERROR, __FILE__, __LINE__, QT_VERSION_STR, msg);
        if(ret == 0 && reportMode & _CRTDBG_MODE_WNDW)
            return;
        else if(ret == 1)
            _CrtDbgBreak();
#endif

#if defined(Q_OS_UNIX) && defined(QT_DEBUG)
        abort();
#else
        exit(1);
#endif
    }
}

int main(int argc, char** argv)
{
    qInstallMsgHandler(customMessageHandler);

    QApplication app(argc, argv);

    QFile* logFile = new QFile(_path_to_logdir_ + "/messages.log");
    if(logFile->open(QFile::WriteOnly | QIODevice::Append | QIODevice::Unbuffered))
        clog = new QDataStream(logFile);

//...

    int exit_code = app.exec();

    delete clog;
    clog = 0;
    delete logFile;
    logFile = 0;

    qInstallMsgHandler(0);

    return exit_code;
}

благодарите :)

пример простой - усложняйте под задачу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 12.2.2009, 17:40
Сообщение #13


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Litkevich Yuriy,
не.....
Константин верно написал в соседней теме.
qInstallMsgHandler эта штука поможет.
правда она только для qt вывода ну да его пользователю хватит.

Сообщение отредактировал kwisp - 12.2.2009, 17:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NordWest
  опции профиля:
сообщение 12.2.2009, 17:43
Сообщение #14


Студент
*

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

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




Репутация:   0  


Цитата(kwisp @ 12.2.2009, 16:11) *
NordWest,
пишешь под виндой? или под линуксом? или тебе надобно и там и там?
думаю в консоли не обязательно запускать она (консоль сама появится) :) при любом запуске если тые её добавишь.


И там и сям. Пеймущественно под виндой пока.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2009, 17:48
Сообщение #15


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

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

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




Репутация:   94  


Цитата(Litkevich Yuriy @ 12.2.2009, 18:35) *
NordWest, поищи по форуму о пренаправлении вывода qDebug
Цитата(Litkevich Yuriy @ 12.2.2009, 19:25) *
kwisp, да вывод в консоль это только для разработчика, а ему надо для пользователя.

----
ХМ, вот сам написал и понял, что и мой совет мимо
в этот лог будут писатся и Qt'явые сообщения, а я понял, что это не нужно. Хотя может я и не так понял


NordWest, тебе всетаки надо отладочную информацию выводить или по аналогии программами типа "The Bat":
Цитата
20:51 Подключились к серверу mail.yande.ru
20:53 Отпралено на mail.yande.ru 10 сообщений

???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Константин
  опции профиля:
сообщение 12.2.2009, 17:53
Сообщение #16


Студент
*

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

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




Репутация:   1  


Цитата(kwisp @ 12.2.2009, 17:40) *
qInstallMsgHandler эта штука поможет.
правда она только для qt вывода ну да его пользователю хватит.


//...
    static QTextStream cout(stdout);
    static QTextStream cerr(stderr);
//...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 12.2.2009, 17:57
Сообщение #17


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(Константин @ 12.2.2009, 17:53) *
Цитата(kwisp @ 12.2.2009, 17:40) *
qInstallMsgHandler эта штука поможет.
правда она только для qt вывода ну да его пользователю хватит.


//...
    static QTextStream cout(stdout);
    static QTextStream cerr(stderr);
//...



я начал пост писать до того как появился пример. :)

NordWest,
вот что тебе надо было найти

http://www.forum.crossplatform.ru/index.ph...stallMsgHandler обрати внимание на дату создания темы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NordWest
  опции профиля:
сообщение 12.2.2009, 21:10
Сообщение #18


Студент
*

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

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




Репутация:   0  


Прошу прощения за молчание - провайдер озверел на несколько часов.

Цитата(Litkevich Yuriy @ 12.2.2009, 17:48) *
NordWest, тебе всетаки надо отладочную информацию выводить или по аналогии программами типа "The Bat":
Цитата
20:51 Подключились к серверу mail.yande.ru
20:53 Отпралено на mail.yande.ru 10 сообщений

???

да, примерно так. нужно смотреть результаты выполнения процедур. С бат'ом вполне схоже.

Цитата
static QTextStream cout(stdout);
static QTextStream cerr(stderr);

Т.е. вывод на cout << и cerr << приведет в customMessageHandler?

Цитата
вот что тебе надо было найти

Видел и её, но это всё по частям, а мне в целом надо узнать.

Вот видимо осталось понять как связываются QTextStream и QTextEdit, чтобы выводить на cout и получать в QTextEdit.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2009, 21:41
Сообщение #19


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

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

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




Репутация:   94  


Цитата(NordWest @ 13.2.2009, 0:10) *
понять как связываются QTextStream и QTextEdit
только самому писать связывание.

Цитата(NordWest @ 13.2.2009, 0:10) *
чтобы выводить на cout и получать в QTextEdit.
нужно ли писать в cout? может проще сделать класс логгера, реализовать в нем, для удобства, оператор <<?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NordWest
  опции профиля:
сообщение 16.2.2009, 12:12
Сообщение #20


Студент
*

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

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




Репутация:   0  


Цитата(Константин @ 12.2.2009, 17:39) *
static QDataStream* clog = 0;

...
пример простой - усложняйте под задачу.


Попробовал.
Как то непонятно. Видимо что-то надо с пространством имен делать. Вывод в файл пишет, но не весь. Так как правильно выводить в лог-файл. По clog? Или cout? Если в классе MainWindow, в котором работа и происходит написать clog <<, то пишет - clog не объявлен. Если cout, то же самое. Пишешь в MainWindow.cpp
Цитата
using namespace std;
, чтобы cout определить - по clog << выдает в консоль а в файле такое вот:
Цитата
LQPainter::begin: Widget painting can only begin as a result of a paintEvent  LQPainter::begin: Widget painting can only begin as a result of a paintEvent
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.11.2024, 1:11