Лучшие практики Для Создания Писателя Журнала для ошибок

Я недавно делал некоторую работу, которая была вполне подробно, я задавался вопросом, что Вы думаете, лучше для входа. Лучше.

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

B. Сохраняйте периодически, возможно после того, как каждый главный раздел был закончен, означая, что я могу сузить холмы, где ошибки.

Какие-либо другие предложения?? Я не хочу открывать и сохранять весь день с большим объемом текста, который я должен записать, но я не хочу терять свою гранулярность информации. Я пишу в C++, жаль о том, что не было упомянуто это предшествующий.

10
задан Craig 18 January 2010 в 07:53
поделиться

5 ответов

Насколько мне известно, довольно распространено (по требованию?), что флеш-поток эквивалентен сбережению.

То есть, когда вы говорите:

file.flush();

Все, что ждет написания, написано. Обратите внимание, что std::endl; также вызывает flush. Итак, оставьте его открытым и просто промойте после сброса информации.

5
ответ дан 4 December 2019 в 01:57
поделиться

Лучшее решение - использовать существующую библиотеку для этого. Там есть много хороших, хорошо проверенных и популярных библиотек. Они обычно дают вам всю универсальность, вам нужно и сэкономить головную боль в управлении файлами. Более того, они позволяют вам сохранить ваши журналы различным целям и не обязательно файлам. Я использовал библиотеку журнала Google и ACE:

ACE - большая библиотека, а регистрация - это лишь небольшая часть этого, поэтому, если вам нужна только журнал, может быть, это не хороший вариант. Во всяком случае, не пытайтесь реализовать вход в систему, сохранить усилия для чего-то более полезного; Если, конечно, у вас есть определенный интерес к журнальным двигателям.

2
ответ дан 4 December 2019 в 01:57
поделиться

Я рекомендую журнал для C ++ (LOG4CPP) , которые имеют хорошие инструменты.

1
ответ дан 4 December 2019 в 01:57
поделиться

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

B. Периодически экономить, возможно, после все основные разделы завершены значение я могу сужать места, где ошибки.

Есть еще какие-нибудь предложения?

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

Вот статья , которая мне очень понравилась по дизайну классов лесозаготовителей. Взгляните.

Если вы не хотите/не хотите иметь пропускную способность для поддержки создания нового модуля для ведения журнала, перейдите к существующей библиотеке, как уже предлагали другие.

Как выбрать нужную библиотеку? То, что вы действительно должны беспокоиться о том, какие журналы вы хотите и на какой стадии развития вы находитесь. Отсортируйте сообщения и проверьте, поддерживает ли библиотека их классификацию четким и последовательным способом. Требуется ли несколько приемников для сообщений? Ваша библиотека это поддерживает? Если ваш код в производстве, вам придется беспокоиться немного больше. Нужна ли система регистрации транзакций? Нужна ли атомарность операций (и, следовательно, журналов)? Нужна ли возможность отката сообщений?

Надеюсь, это поможет.

1
ответ дан 4 December 2019 в 01:57
поделиться

На системах Unix у вас есть что называется syslog (который кстати, как библиотечный вызов, вместе с OpenLog и CloseLog, а также службой). В Windows я верю, что есть журнал событий, не знаю API для этого, хотя.

В любом случае, поскольку Syslog (и журнал событий в Windows) зарегистрирован в IPC (иногда даже удаленно через сеть), процесс развязан и не будет затронут сбой программы. Таким образом, вы также выбросите ответственность за сохранение файла в сервис Syslog. Обратите внимание, что это включает в себя такие вещи, как Loogrotation и сжатие логотипов, а также предоставляя вам возможность использовать стандартизированные инструменты для оценки указанных логов (например, IDS).

Теперь, что сказал, что сбой системы (сбой питания или что-то еще) - это совершенно другая история, я не знаю, если это ваша забота, хотя, если вы хотите, чтобы уточнить немного, какую систему Вы работаете над, может быть легче предложить что-то более примерку.

0
ответ дан 4 December 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: