Скопируйте вывод qDebug ()

0

Я хочу сохранить вывод qDebug() в файле журнала и отобразить его на консоли, я пробовал с этим:

qDebug() << "Hand up!";
QTextStream stream(stdout);
QTextStream out(&logFile);
out << stream.readAll();

но он вообще не работает, даже если я заменю stdout на stderr

Теги:
logging
qt

2 ответа

2
Лучший ответ

Вы можете установить обработчик сообщений, который вы создали, здесь есть отличный минимальный пример: Nokia Wiki: как перенаправить вывод qDebug в файл. Это позволит вам использовать вызовы qDebug() как обычно и выводить их, и вы можете настроить сообщение так, как оно будет выписано.

  • 0
    Я бы немного изменил код, поскольку для Fatal Messages программа прервется перед записью сообщения в текстовый файл.
  • 0
    Хороший вопрос, я написал вариант этого некоторое время назад и забыл об исправлении этого.
Показать ещё 6 комментариев
1

Используйте класс QDebug вместо использования qDebug().

qDebug() создает объект отладки с настройками по умолчанию, например, для отправки выходной строки. Если вы создаете объект самостоятельно, у вас есть больше контроля над ним.

  • 0
    Это будет работать только для ваших собственных сообщений отладки. Для кода, который вы не написали, как в библиотеках Qt, вам нужно будет использовать ответ Нохоласа Смита для захвата этих сообщений.
  • 0
    @RobbieE на самом деле, я просто хочу свой. Но я не понимаю, как скопировать поток в файл, не удаляя его из вывода

Ещё вопросы

Сообщество Overcoder
Наверх
Меню