Serilog: различия между версиями

Материал из DZWIKI
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{Заготовка}}
{{Заготовка}}
'''Serilog''' —  
'''Serilog''' — библиотека [[.NET]] которая поддерживает структурное логирование.
 
== История ==
В феврале 2013 года на [[Github]] появился проект Opi, который уже через 6 дней получил знакомое имя Serilog. Этот проект изначально разрабатывался под .NET Framework 4.5<ref>{{cite web
|url          = https://github.com/serilog/serilog/blob/f3c1c095aee587525dcf75e3d30494e0f9a70978/src/Serilog/Serilog.csproj#L12
|title        = Serilog.csproj
|lang        = en
|date        = 2013-02-20
|access-date  = 2022-11-17
|website      = [[Github]]
|archive-url  = https://web.archive.org/web/20221122011035/https://github.com/serilog/serilog/blob/f3c1c095aee587525dcf75e3d30494e0f9a70978/src/Serilog/Serilog.csproj
|archive-date = 2022-11-22
}}</ref>. На момент его разработки, платформа .NET не предлагала из коробки никакого встроенного API логирования. На тот момент самыми популярными инструментами для решения этой задачи были [[NLog]] и [[log4net]].
 
В 2017 году Serilog создаёт библиотеку для интеграции в подсистему логирования [[.NET Core]]. Эта интеграция не подразумевала пересмотра подсистемы логирования Serilog через призму подходов, которые предлагает платформа .NET Core, как для расширения API логирования, так и для взаимодействия компонент приложения.
Это нюанс может создать для разработчиков много проблем, примеры отлично рассмотрены в статье "Страсти по Serilog + .NET Core: Глобальный логгер<ref>
{{cite web
|url          = https://habr.com/ru/post/550582/
|title        = Страсти по Serilog + .NET Core: Глобальный логгер
|lang        = ru
|date        = 2021-04-04
|access-date  = 2022-11-22
|website      = [[Хабрахабр]]
|archive-url  = https://web.archive.org/web/20220514090436/https://habr.com/ru/post/550582/
|archive-date = 2022-05-14
}}</ref>". Вместе с тем, в этой-же статье в комментариях можно убедится в том, что большинство проблем вытекает из неправильного использования библиотеки.
 
== Функционал ==
Библиотека поддерживает все основные функции логирования, которые есть у [[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-конвейеры) и других форматах.
 
== Источники и примечания ==
{{Примечания|2}}


== Ссылки ==
== Ссылки ==
* {{official|https://serilog.net/}}
* {{github|serilog|serilog}}
* {{github|serilog|serilog-aspnetcore|Serilog.AspNetCore}}
* https://www.nuget.org/packages/Serilog


=== Статьи ===
=== Статьи ===
Строка 19: Строка 67:


[[Категория:Программное обеспечение по алфавиту]]
[[Категория:Программное обеспечение по алфавиту]]
[[Категория:Программное обеспечение, разработанное в 2013 году]]
[[Категория:Свободное программное обеспечение, написанное на C Sharp]]
[[Категория:Свободное программное обеспечение, написанное на C Sharp]]
[[Категория:Библиотеки .NET]]
[[Категория:Библиотеки .NET]]

Текущая версия от 23:23, 22 ноября 2022

Serilog — библиотека .NET которая поддерживает структурное логирование.

История

В феврале 2013 года на Github появился проект Opi, который уже через 6 дней получил знакомое имя Serilog. Этот проект изначально разрабатывался под .NET Framework 4.5[1]. На момент его разработки, платформа .NET не предлагала из коробки никакого встроенного API логирования. На тот момент самыми популярными инструментами для решения этой задачи были NLog и log4net.

В 2017 году Serilog создаёт библиотеку для интеграции в подсистему логирования .NET Core. Эта интеграция не подразумевала пересмотра подсистемы логирования Serilog через призму подходов, которые предлагает платформа .NET Core, как для расширения API логирования, так и для взаимодействия компонент приложения. Это нюанс может создать для разработчиков много проблем, примеры отлично рассмотрены в статье "Страсти по Serilog + .NET Core: Глобальный логгер[2]". Вместе с тем, в этой-же статье в комментариях можно убедится в том, что большинство проблем вытекает из неправильного использования библиотеки.

Функционал

Библиотека поддерживает все основные функции логирования, которые есть у 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-конвейеры) и других форматах.

Источники и примечания

  1. Serilog.csproj (англ.). Github (20 февраля 2013). Дата обращения: 17 ноября 2022. Архивировано 22 ноября 2022 года.
  2. Страсти по Serilog + .NET Core: Глобальный логгер. Хабрахабр (4 апреля 2021). Дата обращения: 22 ноября 2022. Архивировано 14 мая 2022 года.

Ссылки

Статьи