2009-10-22 1 views
1

У меня есть программа, которая сообщает об исключениях на моем сервере. Я также хотел бы отправить полный журнал текущего сеанса, когда произойдет исключение. Поскольку это отчет об ошибке, я хотел бы сконденсировать его до аккуратного небольшого потока данных с одним или двумя символами за действие. Примеры действий - это такие вещи, как: Щелчок по меню «Файл», «Открытие новой таблицы», сохранение текущей рабочей области. Один из методов может заключаться в том, чтобы сделать ключ, в котором говорится, что каждая буква в алфавите представляет конкретное действие, а затем декодирует его на моем сервере. Это может быть проблематично, если я хочу добавить строки в журнал. (Пример: открывает файл «example.txt»). Возможно, существует более объектно-ориентированный подход к этому, который не жертвует размером и автоматизирует кодирование/декодирование? Я просто занимаюсь мозговым штурмом, поэтому любые предложения или рекомендации приветствуются. Спасибо!Размер разумного метода для входа в C#

+0

Я бы посоветовал вам рассмотреть вопрос о конфиденциальности пользователя. Что делать, если пользователь вводил пароль до того, как произошло исключение? Я рад, что она была бы довольно недовольна, узнав, что разработчик разбившегося приложения только что получил часть своего пароля. – Rom

ответ

4

Вы считали, что вам нужно быть «сознательным размером» вообще. Ниже приведены некоторые показатели:

Предполагается, что у вас есть 1000 ошибок в день, и предположим, что каждая ошибка занимает 1k данных. Это около 1 МБ в день. После того, как вы получите около 350 МБ сообщений об ошибках. ОК.

Это вымышленные номера, но в любом случае эти показатели кажутся мне тривиальными, особенно потому, что они также слишком раздуты ... Вы ожидаете более 1000 событий ошибки в день? Будут ли ваши индивидуальные ошибки больше 1k? Вы регистрируетесь на встроенном устройстве? Возможно нет.

+1

Я думал, что то же самое –

+0

@ Andre: мне тоже понравилось ваше сообщение. Увы, у меня нет голосов за день. :-( –

3

Моего мнения:

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

Эти виды исключений должны быть редкими, ваше программное обеспечение не будет иметь дюжину из них и бросать много раз в день. Если да, то почему вы должны сжимать столько информации, которую вы отправляете на сервер? Почему бы вам просто GZIP вызвать столбец вместе с каким-то протоколом log4net и отправить его на сервер? Вы сэкономите время.

0

Я хотел бы, чтобы уплотнить его аккуратный маленький поток данных с одного или двух символов в действии

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

0

Я бы просто использовал шаблон команды и постоянный фоновый поток, сидящий в цикле, вызывающий метод .Execute() для всех объектов, подлежащих обработке. то вы получаете преимущество в том, что можете дросселировать записи db, более легко записывать db-файлы и, возможно, даже использовать bcp для передачи данных. вы всегда можете архивировать и удалять старую информацию об исключениях.

Смежные вопросы