Приглядевшись к своим исходникам я понял что нечто подобное всегда приходится делать некую систему для ведения логов необходимых для отладки. И вот я решил обобщить все что я использовал в своих проектах до этого и выделить в отдельную библиотеку классов.
Требования
- Конфигурация должна быть легкой
- Система должна быть легко расширяема
- Система должна предоставлять множественные способы вывода данных
- Система должна обладать возможностью перехвата необработанных исключений
- Система должна иметь статический и нестатический интерфейсы.
Архитектура
Принятые решения по архитектуре можно увидеть на приведенной ниже диаграмме:
Интересные места
Перехват исключений
/// <summary> /// Установить перехватчик исключений на заданный домен приложений /// </summary> /// <param name="dom"> </param>Домен для установки перехватчика public void SetupIntercept( AppDomain dom ) { dom.UnhandledException += ( s, e ) => { Logger.Instance.Log(new LogMsg() { Exception = (Exception)e.ExceptionObject, Lvl = 100, Msg = "------ Unhandled Exception ------\n" }); }; dom.FirstChanceException += ( s, e ) => { Logger.Instance.Log(new LogMsg() { Exception = e.Exception, Lvl = 80, Msg = "------ First Chance Exception ------\n" }); }; }
Дальнейшее развитие
- Канал для записи данных в Базу данных
- Канал позволяющий передавать сообщения на внешний сервер
- Приложение - сервер логов
Если у вас есть вопросы - пишите. Исходники тут
Комментариев нет:
Отправить комментарий