[Open source, .NET, ASP] Простое и удобное журналирование ошибок для сайтов на .NET Core
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Возможно, многим знакома библиотека ELMAH (Error Logging Modules and Handlers), которая позволяет организовать простое журналирование ошибок для любого сайта, созданного с помощью .NET Framework.
Этот простой и проверенный временем инструмент выручал меня во многим проектах.
Несколько лет назад, создавая свой новый проект под .NET Core я с досадой обнаружил, что ELMAH не работает под .NET Core.
Но это же opensource проект! Несколько выходных в работе над форком, и вот готова первая версия ELMAH работающая под .NET Core.
С тех пор много воды утекло, и признаюсь, я несколько забросил свой pet-проект. Однако, сейчас выдалась небольшая передышка между проектами, мне удалось внести существенные улучшения и хочу познакомить уважаемых «хабравчан» с новой версией ElmahCore.
Итак, ElmahCore – это opensource проект, библиотека для регистрации ошибок на сайтах, созданных с помощью технологий .NET Core.
При возникновении необработанного исключения в вашем приложении, библиотека автоматически регистрирует всю имеющуюся информацию об этом факте, включая следующие данные:
- Тип и информация об исключении, стек вызова
- Информация об HTTP запросе: данные шапки запроса (header), параметры запроса, cookies, данные о подключении пользователя
- Информация о текущем пользователе
- Информация о текущей сессии на сервере
- Переменные среды сервера
В новой версии я добавил регистрацию всех сообщений, созданных через Microsoft.Extensions.Logging (ILogger) в привязке к контексту HTTP запроса.
Вся эта информация может быть сохранена:
- в памяти сервера
- в XML файлах в папке на сервере
- в СУБД, сейчас поддерживаются MSSQL, MySQL, PostgreSQL
Подключение данной библиотеки максимально простое:
- Добавить в проект nuget-пакет elmahcore.
- Добавить следующие строчки в Startup.cs:
services.AddElmah(); // в метод ConfigureServices
app.UseElmah(); // в начале метода Configure
Для доступа к журналу ошибок библиотека предоставляет программный и пользовательский интерфейс.
Интерфейс пользователя, по умолчанию, доступен по пути ~/elmah.
В новой версии я существенно переработал UI, реализовав его на VUE.js
Важным улучшением новой версии является возможность предварительного просмотра места в коде, где произошла ошибка. Для этого необходимо предоставить библиотеке доступ к исходникам:
services.AddElmah(options =>
{
options.SourcePaths = new []
{
@"D:\tmp\ElmahCore.DemoCore3",
@"D:\tmp\ElmahCore.Mvc",
@"D:\tmp\ElmahCore"
};
});
На закладке «Log» отображается журнал сообщений Microsoft.Extensions.Logging в контексте HTTP запроса в котором была зарегистрирована ошибка.
Понятно, что такая ценная информация не для публичных глаз!
Чтобы защитить доступ к журналу, необходимо добавить проверку прав доступа:
services.AddElmah(options =>
{
options.OnPermissionCheck = context => context.User.Identity.IsAuthenticated;
});
При этом вызов UseElmah, должен быть позже UseAuthentication и UseAuthorization
app.UseAuthentication();
app.UseAuthorization();
app.UseElmah();
Можно организовать фильтрацию регистрируемых ошибок с помощь фильтров, реализованных в коде (реализующих интерфейс IErrorFilter) или в xml-файле конфигурации (https://elmah.github.io/a/error-filtering/examples/).
services.AddElmah<XmlFileErrorLog>(options =>
{
options.FiltersConfig = "elmah.xml";
options.Filters.Add(new MyFilter());
})
Кроме регистрации журнала ошибок библиотека позволяет организовать рассылку уведомлений (через реализацию IErrorNotifier), например на электронную почту.
services.AddElmah<XmlFileErrorLog>(options =>
{
options.Notifiers.Add(new ErrorMailNotifier("Email",emailOptions));
});
Надеюсь, что эта бесплатная библиотека будет полезна в ваших проектах.
Подробнее с библиотекой можно познакомиться здесь.
===========
Источник:
habr.com
===========
Похожие новости:
- [Высокая производительность, .NET, Микросервисы] DDD, CQRS, Event-Driven, модель акторов и микросервисы
- [Высокая производительность, Ненормальное программирование] Новогодние бенчмарки компьютеров Эльбрус
- [Программирование, .NET, C#] 6 малоизвестных фич C#/.NET (перевод)
- [Open source, JavaScript, Голосовые интерфейсы] Навыки для виртуальных ассистентов на веб-технологиях
- [Разработка на Raspberry Pi, Игры и игровые приставки] Эмулятор ретроконсоли встроили в контроллер SNES
- [Настройка Linux, Разработка на Raspberry Pi] Kali Linux на Raspberry Pi: просто, быстро, понятно
- [Open source, *nix] FOSS News №48 – дайджест новостей и других материалов о свободном и открытом ПО за 21-27 декабря 2020 года
- [Разработка веб-сайтов, Open source, JavaScript, ReactJS, TypeScript] Что выбрать в качестве библиотеки компонентов для React-проекта
- [.NET, ASP, C#, Разработка под Linux, DevOps] Как готовить Cake, используя только Frosting
- [Open source, Сетевые технологии, Kubernetes] Шифрование передаваемых данных в Calico Enterprise
Теги для поиска: #_open_source, #_.net, #_asp, #_.net_core, #_c#, #_asp.net, #_error_reporting, #_error_handling, #_open_source, #_.net, #_asp
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:11
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Возможно, многим знакома библиотека ELMAH (Error Logging Modules and Handlers), которая позволяет организовать простое журналирование ошибок для любого сайта, созданного с помощью .NET Framework. Этот простой и проверенный временем инструмент выручал меня во многим проектах. Несколько лет назад, создавая свой новый проект под .NET Core я с досадой обнаружил, что ELMAH не работает под .NET Core. Но это же opensource проект! Несколько выходных в работе над форком, и вот готова первая версия ELMAH работающая под .NET Core. С тех пор много воды утекло, и признаюсь, я несколько забросил свой pet-проект. Однако, сейчас выдалась небольшая передышка между проектами, мне удалось внести существенные улучшения и хочу познакомить уважаемых «хабравчан» с новой версией ElmahCore. Итак, ElmahCore – это opensource проект, библиотека для регистрации ошибок на сайтах, созданных с помощью технологий .NET Core. При возникновении необработанного исключения в вашем приложении, библиотека автоматически регистрирует всю имеющуюся информацию об этом факте, включая следующие данные:
В новой версии я добавил регистрацию всех сообщений, созданных через Microsoft.Extensions.Logging (ILogger) в привязке к контексту HTTP запроса. Вся эта информация может быть сохранена:
Подключение данной библиотеки максимально простое:
services.AddElmah(); // в метод ConfigureServices
app.UseElmah(); // в начале метода Configure Для доступа к журналу ошибок библиотека предоставляет программный и пользовательский интерфейс. Интерфейс пользователя, по умолчанию, доступен по пути ~/elmah. В новой версии я существенно переработал UI, реализовав его на VUE.js Важным улучшением новой версии является возможность предварительного просмотра места в коде, где произошла ошибка. Для этого необходимо предоставить библиотеке доступ к исходникам: services.AddElmah(options =>
{ options.SourcePaths = new [] { @"D:\tmp\ElmahCore.DemoCore3", @"D:\tmp\ElmahCore.Mvc", @"D:\tmp\ElmahCore" }; }); На закладке «Log» отображается журнал сообщений Microsoft.Extensions.Logging в контексте HTTP запроса в котором была зарегистрирована ошибка. Понятно, что такая ценная информация не для публичных глаз! Чтобы защитить доступ к журналу, необходимо добавить проверку прав доступа: services.AddElmah(options =>
{ options.OnPermissionCheck = context => context.User.Identity.IsAuthenticated; }); При этом вызов UseElmah, должен быть позже UseAuthentication и UseAuthorization app.UseAuthentication();
app.UseAuthorization(); app.UseElmah(); Можно организовать фильтрацию регистрируемых ошибок с помощь фильтров, реализованных в коде (реализующих интерфейс IErrorFilter) или в xml-файле конфигурации (https://elmah.github.io/a/error-filtering/examples/). services.AddElmah<XmlFileErrorLog>(options =>
{ options.FiltersConfig = "elmah.xml"; options.Filters.Add(new MyFilter()); }) Кроме регистрации журнала ошибок библиотека позволяет организовать рассылку уведомлений (через реализацию IErrorNotifier), например на электронную почту. services.AddElmah<XmlFileErrorLog>(options =>
{ options.Notifiers.Add(new ErrorMailNotifier("Email",emailOptions)); }); Надеюсь, что эта бесплатная библиотека будет полезна в ваших проектах. Подробнее с библиотекой можно познакомиться здесь. =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:11
Часовой пояс: UTC + 5