Можно ли использовать MS Enterprise Library Logging для нескольких приложений?
-
05-07-2019 - |
Вопрос
Мне интересно, возможно ли это - а); б) хорошая практика - регистрировать несколько приложений в одном экземпляре журнала?
У меня есть несколько приложений ASP.NET, и я хотел бы объединить все исключения в централизованном расположении, которое можно запрашивать как часть приложения Enterprise Dashboard. Я использую как блок регистрации EL, так и блог об исключениях EL вместе с слушателем трассировки базы данных. Я хотел бы видеть исключения для всех приложений, зарегистрированных в одной базе данных.
Любые комментарии, рекомендации по передовому опыту или ответы будут очень кстати.
Решение
Да, определенно возможно хранить несколько журналов приложений в одном месте, используя EL. Р>
Приложение Enterprise Dashboard, которое позволяет просматривать исключения между приложениями и уровнями и предоставляет отчеты - это отличная причина для централизации ведения журналов. Поэтому я скажу «да» и на вопрос «б».
Возможные проблемы / негативы
Я предполагаю, что вы используете прослушиватель трассировки базы данных, поскольку вы упомянули об этом в своем вопросе. Если большое количество приложений регистрирует большое количество записей журнала в сочетании с пользователями, запрашивающими (потенциально большую) базу данных журналов, существует вероятность снижения производительности (поскольку ведение журнала выполняется синхронно), что может повлиять на производительность вашего приложения.
Другой подход
Чтобы смягчить эту возможность, я бы расследовал использование службы распространителя вести асинхронно. В этой модели все приложения будут регистрироваться в очереди сообщений (используя прослушиватель трассировки MSMQ). Затем отдельный сервис опрашивает очередь и перенаправляет записи журнала в прослушиватель трассировки (в вашем случае прослушиватель трассировки базы данных), который сохраняет сообщения в базе данных панели мониторинга. Эта настройка является более сложной. Но, похоже, это соответствует тому, чего вы пытаетесь достичь, и имеет некоторые другие преимущества, такие как асинхронная обработка и возможность ведения журнала, даже если база данных панели мониторинга не работает (например, для обслуживания).
Другие соображения
Вы также можете подумать о стандартизации некоторых свойств LogEntry для разных приложений. Например, LogEntry на самом деле не имеет " приложения " свойство, чтобы вы могли добавить ExtendedProperty для представления имени приложения. Или вы можете стандартизировать определенный формат для свойства Message, чтобы различная информация могла быть извлечена из сообщения и сохранена в отдельных столбцах базы данных для облегчения поиска и категоризации.