Korzystanie z Microsoft.Extensions.loging nad poprzednim systemem rejestrowania MVVMCROSS oferuje kilka korzyści:
1. Elastyczność i rozszerzalność: Microsoft.Extensions.logging zapewnia warstwę abstrakcyjną, która pozwala programistom korzystać z różnych dostawców rejestrowania, takich jak Serilog, NLOG lub Log4net. Ta elastyczność oznacza, że ramy rejestrowania można łatwo wymienić w zależności od potrzeb projektu, bez zmiany kodu podstawowego. Natomiast poprzedni system MVVMCross był bardziej sztywny i wymagał konkretnych implementacji dla różnych dostawców [1] [2].
2. Wsparcie wtrysku zależności: Microsoft.EXTENSIONS.Logging dobrze integruje się z ramami wtrysku zależności, ułatwiając wtryskiwanie rejestratorów do klas. Jest to szczególnie przydatne do testowania jednostkowego, ponieważ pozwala na tworzenie próbnych rejestratorów w celu zweryfikowania zachowania rejestrowania [7]. MVVMCROSS obsługuje również wstrzyknięcie zależności do rejestrowania, ale przy użyciu Microsoft.Extensions.Logging zapewnia bardziej znormalizowane podejście w różnych ramach [2].
3. Stabilność i wsparcie społeczności: Microsoft.Extensions.logging to szeroko przyjęty i stabilny interfejs API, obsługiwany przez Microsoft i szerszą społeczność .NET. Ta stabilność zapewnia, że będzie nadal utrzymywana i aktualizowana, zapewniając długoterminową niezawodność projektów [2] [9].
4. Uproszczona konfiguracja: W przypadku Microsoft.Extensions.logging konfigurację można zarządzać za pośrednictwem AppSettings.json lub innych plików konfiguracyjnych, co upraszcza proces konfiguracji w porównaniu z innymi frameworkami rejestrowania. Jest to szczególnie korzystne podczas korzystania z dostawców takich jak Serilog lub NLOG, które można skonfigurować za pomocą JSON [7].
5. Unikanie blokady dostawcy: Za pomocą warstwy abstrakcji takiej jak Microsoft.Extensions.logging, programiści unikają powiązania kodu z określoną strukturą rejestrowania. Ułatwia to przełączanie między różnymi dostawcami rejestrowania bez znaczących zmian kodu, zmniejszenie blokady dostawcy i zwiększenie elastyczności projektu [9].
6. Skalowalność i wydajność: Microsoft.Extensions.logging został zaprojektowany do efektywnego obsługi scenariuszy rejestrowania o wysokiej wydajności. Obsługuje asynchroniczne rejestrowanie i może być zoptymalizowane dla różnych środowisk, dzięki czemu nadaje się do aplikacji na dużą skalę [9].
Podsumowując, Microsoft.Extensions.Logging oferuje elastyczne, skalowalne i szeroko obsługiwane rozwiązanie rejestrowania, które dobrze integruje się z wtryskiem zależności i różnymi dostawcami rejestrowania, co czyni go doskonałym wyborem w stosunku do poprzedniego systemu rejestrowania MVVMCross dla wielu scenariuszy programistycznych.
Cytaty:[1] https://developer.vonage.com/en/blog/adaptive-library-logging-with-mycrosoft-extensions-logging-dr
[2] https://www.mvvmcross.com/documentation/fundamentals/logging-new
[3] https://stackoverflow.com/questions/46483019/logging-from-static-members-with-mycrosoft-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-licrosoft-extensions-logging-work-for-full-no-framework
[7] https://stackoverflow.com/questions/58209076/microsoft-extensions-logging-vs-nlog
[8] https://stackoverflow.com/questions/68075159/mvvm-cross-logging-etup-class
[9] https://blog.stephencleary.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