Какой вход является хорошим входом для Вашего приложения?

Таким образом, мы обсудили вход мимоходом в моем месте работы, и я задавался вопросом, могли ли некоторые из Вас парни здесь дать мне некоторое представление о Ваших подходах?

Обычно наш сценарий, никакой вход действительно вообще и главным образом приложения.NET, winforms/WPF клиенты, говорящие через веб-сервисы или прямо к дб.

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

Вы берете его к вызовам к веб-сервисам или дб? Загрузки страницы?

Как Вы получаете хорошую идею того, что пользователь пытался сделать в то время?

Лучше пойти полностью и зарегистрировать все через несколько попыток/дни или зарегистрировать только, к чему Вы нуждаетесь (данный HDD, является дешевым).

Я предполагаю, что это - несколько вопросов, но я хотел получить больше идеи того, что фактическая практика находится там в более крупных магазинах!

12
задан crucible 30 August 2008 в 10:02
поделиться

7 ответов

Ключевой вещью для входа является хорошее планирование. Я предложил бы, чтобы Вы изучили исключение библиотеки предприятия и регистрирующий блок приложений (http://msdn.microsoft.com/en-us/library/cc467894.aspx). Существует крошечный бит кривой обучения, но он действительно работает вполне хорошо. Подход, который я одобряю в данный момент, должен определить 4 приоритетных уровня. 4=Unhandled исключение (ошибка в журнале событий), 3=Handled исключение (предупреждение в журнале событий), 2=Access внешний ресурс, такой как веб-сервис, дб или мейнфреймовая система (информация в журнале событий), 1=Verbose/anything еще интереса (информация в журнале событий).

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

Обновление: Для ясности я предложил бы, чтобы у Вас был вход в систему и Ваше winform/wpf приложение и Ваши веб-сервисы. В веб-сценарии у меня были проблемы в прошлом, где может быть трудно связать ошибку на клиенте назад до серверов приложений. Главным образом, потому что любая ошибка через веб-сервисы обернута как исключение SOAP. Я не могу помнить первое, что пришло на ум, но я думаю, используете ли Вы пользовательский обработчик исключений (который является частью библиотеки предприятия), можно добавить данные на исключения, такие как handlinginstance идентификатор исключения из сервера приложений. Это помогает связать исключения на клиенте назад к Вашему полю приложения при помощи LogParser (http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en).

Второе Обновление: Мне также нравится давать каждому различному событию отдельный идентификатор события и отслеживать это в текстовом файле или электронной таблице при управлении исходным кодом. Да, это - боль, но если Вам повезло иметь команду IT, заботящуюся о Ваших системах в производстве, я нахожу, что они склонны ожидать, что различные события будут иметь различные идентификаторы события.

10
ответ дан 2 December 2019 в 06:28
поделиться

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

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

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

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

1
ответ дан 2 December 2019 в 06:28
поделиться

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

Моя самая большая болевая точка в поддержке пользовательского приложения.NET прямо сейчас - то, что существует 8 различных приложений (некоторые консольные приложения, некоторые winforms и некоторая сеть) от того же поставщика. Ни один из них не регистрируется к журналу событий, у них всех есть свои собственные файлы журнала. Но для всех winforms и консольных приложений, они сохраняют файл открытым, в то время как они работают, таким образом, я не могу контролировать его для проблем. Кроме того, журналы все записаны немного по-другому, таким образом, я должен был бы проанализировать их немного по-другому для получения полезной информации.

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

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

7
ответ дан 2 December 2019 в 06:28
поделиться

Это сообщение на highscalability.com обеспечивает хороший взгляд на вход в систему крупномасштабной распределенной системы. (И по совпадению это начинается путем упоминания сообщения на JoelOnSoftware).

3
ответ дан 2 December 2019 в 06:28
поделиться

Для типичного настольного приложения я сохранил бы все на текущей сессии и возможно хранил бы информационные сообщения для прошлого n сессии или до x в размере.

Я предполагаю, что Ваши сообщения организованы. Мы используем 4 категории; ошибки, предупреждения, информация и трассировка. Мы все еще выясняем то, что идет в который уровень. Поскольку я привыкаю к парсингу файлов журнала, я обычно говорю "журнал больше". Не потейте удобочитаемость, Вы, вероятно, собираетесь, должны обработать файл журнала немного, прежде чем можно будет использовать его.

В конце найдите хорошую платформу журналирования, которая позволяет Вам управлять своим использованием шпульки на пожизненном и пространстве памяти и надлежащим API, который минимизирует эффект на Ваш код. Идеально Вы просто вводите info("waaah") или warning("waah") и API делает все необычные метки для Вас.

1
ответ дан 2 December 2019 в 06:28
поделиться

Лучше пойти полностью и зарегистрировать все через несколько попыток/дни или зарегистрировать только, к чему Вы нуждаетесь (данный HDD, является дешевым).

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

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

Для большинства вещей я записал (небольшие сценарии), у меня обычно просто есть отладка () функция, которая проверяет, установлен ли - подробный и печатает сообщение.. Тем путем я могу пихнуть отладку ("некоторое значение: %s" % (авар)), при необходимости, и не должны взволновать по поводу возвращения и удаления отладки печати () операторы везде.

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

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

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

2
ответ дан 2 December 2019 в 06:28
поделиться

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

0
ответ дан 2 December 2019 в 06:28
поделиться
Другие вопросы по тегам:

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