Средства ведения журнала и Qt - PullRequest
22 голосов
/ 09 октября 2009

Какие средства ведения журнала вы используете с Qt?

Выбираете ли вы методы qDebug (), qWarning (), qCritical (), qFatal () или что-то вроде Log4cpp (Log4cplus и т. Д.), Или, может быть, какой-то пользовательский код?

Ответы [ 8 ]

12 голосов
/ 23 августа 2011

Если вы просто работаете в одном потоке, qDebug и тому подобное работают очень хорошо, или вы можете немного их изменить, установив собственный обработчик с qInstallMessageHandler в QT 5.0+ или qInstallMsgHandler в старых версиях.

Примечание: более старые версии qDebug () и т. Д., В которых вы использовали qInstallMsgHandler (сейчас устарели, например, http://doc.qt.io/archives/4.6/qtglobal.html#qDebug), не были поточно-ориентированными. Если вы используете потоки, они будут аварийно завершаться / разрушаться. используя QTextStream, который был повторно входящим, но не потокобезопасным.

10 голосов
/ 21 февраля 2014

Поскольку Qt 5.2 поддерживает категорированное ведение журнала: http://qt -project.org / doc / qt-5 / qloggingcategory.html . Это позволяет вам разделить ваши сообщения регистрации на (иерархию) категорий, и точно настроить, что регистрируется, а что нет.

10 голосов
/ 09 октября 2009

Существующие библиотеки журналов C ++ слишком тяжелы для моих вкусов, поэтому я создал пользовательский интерфейс, основанный на идеях из Вход в C ++ для серверной части Qt qInstallMsgHandlerq. Это кроссплатформенный и потокобезопасный. Когда-нибудь я приведу в порядок код и выпущу его для всего мира:)

Интересной альтернативой для Qt является QxtLogger .

5 голосов
/ 04 августа 2011

Log4Qt - это порт известного log4j в мир Qt.

4 голосов
/ 22 августа 2011

QDebug - лучший способ, так как он обеспечивает готовую интеграцию с остальной частью фреймворка, не делает вас зависимым от стороннего кода и покрывает почти все потребности ведения журналов.

3 голосов
/ 13 сентября 2013

Относительно ответа, говорящего: «К сожалению, qDebug () и т. Д. Не являются поточно-ориентированными. Если вы используете потоки, они будут аварийно завершать работу с ошибками. Внутренне он использует QTextStream, который является повторно входящим, но не поточно-ориентированным».

Я серьезно сомневаюсь, что qDebug предназначен для одновременного использования. Подайте ошибку, если это не так.

3 голосов
/ 09 октября 2009

Я не использую Qt, но для ведения журнала я использую модифицированную версию Dr'Dobb's Logging in C ++ . Оригинальный код можно найти здесь .

Мои модификации относятся к платформе Microsoft Windows (fopen не разрешает совместное использование файлов для чтения) и могут быть найдены здесь .

1 голос
/ 09 октября 2009

Зависит от того, как вы хотите использовать эти данные журнала.

Если он используется для отладки во время выполнения, qWarning () вполне подойдет.

Если вам нужно отладить ретроспективу (обычно код на стороне сервера), лучше всего использовать старые текстовые файлы. Лучше всего организовать эти файлы журналов по дням, когда записывается журнал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...