Serilog
Это заготовка статьи. |
Serilog — библиотека .NET которая поддерживает структурное логирование.
История
В феврале 2013 года на Github появился проект Opi, который уже через 6 дней получил знакомое имя Serilog. Этот проект изначально разрабатывался под .NET Framework 4.5[1]. На момент его разработки, платформа .NET не предлагала из коробки никакого встроенного API логирования. На тот момент самыми популярными инструментами для решения этой задачи были NLog и log4net.
В 2017 году Serilog создаёт библиотеку для интеграции в подсистему логирования .NET Core. Эта интеграция не подразумевала пересмотра подсистемы логирования Serilog через призму подходов, которые предлагает платформа .NET Core, как для расширения API логирования, так и для взаимодействия компонент приложения.
Функционал
Библиотека поддерживает все основные функции логирования, которые есть у log4net, Nlog, и других известных библиотек:
- Несколько общепринятых типов записи:
- Verbose — самое низкоуровнивое и детальное логирование (например, пришедшие аргументы в метод);
- Debug — данные для отладки кода, на один уровень выше Verbose (например, какой метод запускали, и результат выполнения);
- Warning — предупреждение для бизнес-процесса, не должно содержать Debug данные (например, запустили расчет зарплат);
- Error — ошибка в приложении, которое не ожидали;
- Fatal — исключительная ошибка останавливающая бизнес процессы приложения (например, перенаправили пользователя в PayPal и оплата покупателя не равна ожидаемой сумме).
- Разные типы хранения, называемых в Serilog стоком: текстовый файл, реляционные БД, NoSQL БД, Windows Events, HTTP (Hypertext Transfer Protocol) запросы, и т.д..;
- Удобная конфигурация как через код, так и через .config файлы в форматах XML и JSON;
- Эффективность при включении, чрезвычайно низкие накладные расходы при отключении уровня ведения журнала;
- Лучшая в своем классе поддержка .NET Core, включая поставщика Microsoft.Extensions.Logging;
- Сложное обогащение журнальных событий контекстной информацией, включая облачные (LogContext) свойства, идентификаторы потоков и процессов, а также идентификаторы корреляции домена, такие как HttpRequestId;
- Объекты Logger с нулевым общим состоянием с необязательным глобальным статическим классом Log;
- Формат-агностический конвейер протоколирования, который может генерировать события в открытом тексте, JSON, в объектах LogEvent в памяти (включая Rx-конвейеры) и других форматах.
Примечания
- ↑ Serilog.csproj (англ.). Github (20 февраля 2013). Дата обращения: 17 ноября 2022. Архивировано 22 ноября 2022 года.
Ссылки
- serilog.net — официальный сайт Serilog
- Проект Serilog на сайте GitHub
- Проект Serilog.AspNetCore на сайте GitHub
- https://www.nuget.org/packages/Serilog
Статьи
- Структурное логирование на примере Serilog и Seq. Хабрахабр (6 сентября 2015). Дата обращения: 21 ноября 2022. Архивировано 21 ноября 2022 года.