Ответ 1
Один предостерегающий взгляд: в 100+ приложениях в большом магазине, где сотни, возможно, тысяч хостов, запускающих эти приложения, избегают всего, что вызывает тугую связь. Это практически исключает возможность подключения непосредственно к SQL Server или к любому решению базы данных, поскольку ведение журнала приложений зависит от доступности репозитория журнала.
Доступность центрального репозитория немного сложнее, чем просто "если вы не можете подключиться, не регистрируйте его", потому что обычно наиболее интересные события возникают, когда есть проблемы, а не когда все идет гладко. Если ваш журнал записывает записи точно, когда что-то становится интересным, ему никогда не будет доверено разрешать инциденты и, как таковые, не смогут получить поддержку и поддержку для других держателей акций (то есть владельцев приложений).
Если вы решите, что вы можете реализовать сохранение и повторить неудачную доставку информации о логах самостоятельно, вы столкнулись с тяжелой битвой: это не тривиальная задача и намного сложнее, чем кажется, начиная с эффективного и надежного хранения сохраненной информации и заканчивая созданием хорошей повторной логики и логики логики.
У вас также должен быть ответ на проблемы аутентификации и безопасности. Крупные организации имеют несколько доменов с различными доверительными отношениями, сотрудники работают через VPN или прямой доступ из дома, некоторые приложения запускаются без присмотра, некоторые службы настроены для работы как локальные пользователи, некоторые машины не объединены с доменом и т.д. И т.д. Вам лучше вопрос о том, как развертывается модуль протоколирования каждого приложения, повсеместно развертывается, собирается аутентифицироваться в центральном репозитории (и какие ситуации не будут отменены).
В идеале вы должны использовать механизм доставки вне коробки для вашего модуля ведения журнала. MSMQ, вероятно, наиболее подходящая: надежная асинхронная надежная доставка (по крайней мере, в большинстве случаев использования), доступная на каждом хосте Windows при установке (необязательно). Что является основной причиной боли, ваши приложения будут зависеть от компонента ОС, отличного от стандартного.
Центральное хранилище репозитория должно иметь возможность доставлять запрошенную информацию, возможно:
- разработчики приложений, исследующие инциденты
- команда поддержки клиентов, расследующая потерянную транзакцию, сообщаемую жалобой клиента.
- служба безопасности, выполняющая судебную экспертизу
- бизнес-менеджеры, требующие статистики, тенденций и агрегированной информации (BI).
Единственное хранилище, способное доставить это для любого серьезного org (размер, время жизни), является реляционным движком, поэтому, вероятно, SQL Server. Выполнение анализа текстовых файлов действительно не будет идти на расстояние.
Поэтому я бы рекомендовал перенос/доставку журналов на основе обмена сообщениями (MSMQ) и реляционный центральный репозиторий (SQL Server), возможно, с компонентом aanalitycal поверх него (Analysis Services Data Mining). как вы видите, это явно не малый подвиг, и он охватывает немного больше, чем просто настройка log4net.
Что касается того, что нужно регистрировать, вы говорите, что уже задумываетесь, но я хотел бы перезвонить в моем дополнительном 2c: часто, особенно в случае расследования инцидентов, вам понравится возможность запрашивать дополнительную информацию. Это означает, что вы хотите узнать содержимое определенных файлов с компьютера инцидента или некоторые разделы реестра или некоторые значения счетчика производительности или полный свал процесса. Очень полезно иметь возможность запрашивать эту информацию из интерфейса центрального репозитория, но нецелесообразно всегда собирать эту информацию, если это необходимо. Это означает, что между выражением и центральным хранилищем должна быть какая-то двунаправленная связь, когда приложение сообщает об инциденте, его можно попросить добавить дополнительную информацию (например, свалку процесса по вине). Там должно быть много инфраструктуры, чтобы что-то подобное происходило из протокола между ведением журнала приложений и центральным репозиторием, к возможности центрального репозитория распознавать повторение инцидента, в качестве библиотеки логгинга для сбора дополнительная информация, требуемая и не в последнюю очередь способность оператора отмечать инциденты, поскольку они нуждаются в дополнительной информации о следующем происшествии.
Я понимаю, что этот ответ, вероятно, кажется излишним на данный момент, но я долгое время занимался этим проблемным пространством, я просмотрел множество отчетов о сбоях в работе в Интернете от доктора Уотсона еще в тот день, когда я был с MS, и я могу сказать вам, что это требование существует, они являются действительными проблемами, и когда они реализованы, решение помогает чрезвычайно. В конечном счете, вы не можете исправить то, что вы не можете измерить. Крупная организация зависит от хорошего управления и контроля за ее запасами приложений, включая ведение журнала и аудит.
Есть сторонние поставщики, предлагающие решения, некоторые даже интегрированные с log4net, например bugcollect.com (Полное раскрытие: моя собственная компания), Error Traffic Controller или Exceptioneer и другие.