Использование microsoft.extensions.logging по сравнению с предыдущей системой журнала Mvvmcross предлагает несколько преимуществ:
1. Гибкость и расширяемость: microsoft.extensions.logging предоставляет уровень абстракции, который позволяет разработчикам использовать различных поставщиков журнала, таких как Serilog, NLOG или Log4net. Эта гибкость означает, что структура регистрации может быть легко заменена в зависимости от потребностей проекта, без изменения базового кода. Напротив, предыдущая система MVVMcross была более жесткой и требовалась конкретной реализации для разных поставщиков [1] [2].
2. Поддержка впрыска зависимостей: Microsoft.extensions.Logging хорошо интегрируется с рамками впрыска зависимостей, что облегчает инъекцию регистраторов в классы. Это особенно полезно для модульного тестирования, так как позволяет создавать макет -регистраторов проверять поведение журнала [7]. MVVMcross также поддерживает инъекцию зависимости для ведения журнала, но с помощью microsoft.extensions.logging обеспечивает более стандартизированный подход в разных структурах [2].
3. Стабильность и поддержка сообщества: Microsoft.extensions.Logging - это широко принятый и стабильный API, поддерживаемый Microsoft и более широким сообществом .NET. Эта стабильность гарантирует, что она будет продолжать поддерживать и обновлять, обеспечивая долгосрочную надежность для проектов [2] [9].
4. Упрощенная конфигурация: с помощью microsoft.extensions.logging конфигурация можно управлять с помощью Appsettings.json или других файлов конфигурации, которые упрощает процесс настройки по сравнению с некоторыми другими фреймворками журнала. Это особенно полезно при использовании поставщиков, таких как Serilog или NLOG, которые можно настроить с помощью JSON [7].
5. Избегание блокировки поставщика: с помощью уровня абстракции, такого как microsoft.extensions.logging, разработчики не связывают свой код с конкретной системой журнала. Это облегчает переключение между различными поставщиками журнала без значительных изменений кода, уменьшая блокировку поставщиков и повышение гибкости проекта [9].
6. Масштабируемость и производительность: microsoft.extensions.logging предназначено для эффективного обработки высокопроизводительных сценариев регистрации. Он поддерживает асинхронную регистрацию и может быть оптимизирован для различных сред, что делает его подходящим для крупномасштабных приложений [9].
Таким образом, Microsoft.extensions.Logging предлагает гибкое, масштабируемое и широко поддерживаемое решение для ведения журнала, которое хорошо интегрируется с инъекцией зависимостей и различными поставщиками журнала, что делает его превосходным выбором по сравнению с предыдущей системой журнала MVVMcross для многих сценариев разработки.
Цитаты:[1] https://developer.vonage.com/en/blog/adaptive-lybrary-logging-with-microsoft-extensions-logging-r
[2] https://www.mvvmcross.com/documentation/fundamentals/logging-new
[3] https://stackoverflow.com/questions/46483019/logging-from-static-members-with-microsoft-extensions-logging
[4] https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/extensions-logging
[5] https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-60
[6] https://stackoverflow.com/questions/42356802/how-does-microsoft-extensions-logging-work-for-full-net-framework
[7] https://stackoverflow.com/questions/58209076/microsoft-extensions-logging-vs-nlog
[8] https://stackoverflow.com/questions/68075159/mvvm-cross-logging-setup-class
[9] https://blog.stephenceley.com/2018/05/microsoft-extensions-logging-part-1-Introduction.html
[10] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[11] https://www.reddit.com/r/dotnet/comments/142fs0y/serilog_vs_microsoft_logger_ilogger/
[12] https://github.com/mvvmcross/mvvmcross/issues/2936