вторник, июля 13, 2010

Система ведения логов

Приглядевшись к своим исходникам я понял что нечто подобное всегда приходится делать некую систему для ведения логов необходимых для отладки. И вот я решил обобщить все что я использовал в своих проектах до этого и выделить в отдельную библиотеку классов.


Требования

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

Архитектура



Принятые решения по архитектуре можно увидеть на приведенной ниже диаграмме: Структура классов


Интересные места


Перехват исключений
/// <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"
  }); 
 };
}

Дальнейшее развитие



  • Канал для записи данных в Базу данных
  • Канал позволяющий передавать сообщения на внешний сервер
  • Приложение - сервер логов


Если у вас есть вопросы - пишите. Исходники тут


Комментариев нет:

Отправить комментарий