Приглядевшись к своим исходникам я понял что нечто подобное всегда приходится делать некую систему для ведения логов необходимых для отладки. И вот я решил обобщить все что я использовал в своих проектах до этого и выделить в отдельную библиотеку классов.
Требования
- Конфигурация должна быть легкой
- Система должна быть легко расширяема
- Система должна предоставлять множественные способы вывода данных
- Система должна обладать возможностью перехвата необработанных исключений
- Система должна иметь статический и нестатический интерфейсы.
Архитектура
Принятые решения по архитектуре можно увидеть на приведенной ниже диаграмме:
Интересные места
Перехват исключений
/// <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"
});
};
}
Дальнейшее развитие
- Канал для записи данных в Базу данных
- Канал позволяющий передавать сообщения на внешний сервер
- Приложение - сервер логов
Если у вас есть вопросы - пишите. Исходники тут

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