Při porovnání Microsoft.Extensions.Logging s mvxLog V souvislosti s MVVMCROSS se z používání prvního objevuje několik výhod:
1. rozšiřitelnost a flexibilita: Microsoft.Extensions.Logging nabízí vysoce rozšiřitelný rámec, který umožňuje snadnou integraci s různými poskytovateli protokolování třetích stran, jako jsou NLOG, Serilog a Log4NET. Tato flexibilita není ze své podstaty zabudována do MVXLogu, což bylo omezenější ve schopnosti integrovat se do různých protokolovacích rámců [1] [2]. Díky společnosti Microsoft.Extensions.Logging můžete snadno přepínat mezi různými poskytovateli protokolování, aniž byste změnili kód vaší aplikace, čímž se přizpůsobila různým prostředím a požadavkům.
2. Podpora injekce závislosti: Microsoft.Extensions.logging je navržen tak, aby bezproblémově pracoval s injekcí závislosti (DI), což je hlavní rys mnoha moderních aplikací .NET, včetně aplikací postavených s MVVMCross. Tato integrace umožňuje snadnější testování jednotek a zesměšňování protokolování komponent, což je prospěšné pro udržení robustního pokrytí testu [5] [8]. MVXLog, i když injekční, nenabízí stejnou úroveň integrace s DI Frameworks jako Microsoft.Extensions.Logging.
3. Standardizace a podpora komunity: Microsoft.Extensions.Logging je široce přijatý standard v ekosystému .NET, což znamená, že těží z rozsáhlé podpory a dokumentace komunity. Tato standardizace usnadňuje vývojářům porozumět a implementovat protokolování napříč různými projekty a platformami [2] [11]. Naproti tomu MVXLog je specifický pro MVVMCross a nemusí být tak široce uznávaný nebo podporován mimo tento rámec.
4. Škálovatelnost a výkon: Architektura Microsoft.Extensions.logging je navržena tak, aby efektivně zvládla rozsáhlé aplikace. Poskytuje funkce, jako je filtrování protokolu a kategorizace, což může zlepšit výkon snížením zbytečného výstupu protokolu [11]. Zatímco MVXLog je schopný, nemusí odpovídat optimalizaci škálovatelnosti a výkonu dostupné v Microsoft.Extensions.Logging.
5. Flexibilita konfigurace: Microsoft.Extensions.Logging umožňuje konfiguraci různými prostředky, včetně souborů JSON (např. „AppSettings.json`), který poskytuje flexibilní způsob, jak spravovat nastavení protokolu, aniž by bylo možné aplikovat [5]. Tato flexibilita je zvláště užitečná v prostředích, kde se potřeby protokolování mohou často měnit.
6. Úrovně protokolu a závažnost: Oba rámce podporují různé úrovně protokolu (např. Trace, ladění, informace, varování, chyba), ale Microsoft.Extensions.Logging zahrnuje další „kritickou“ úroveň a úroveň „žádná“ pro účely konfigurace [11]. To poskytuje podrobnější kontrolu nad závažností a konfigurací protokolování.
Stručně řečeno, zatímco MVXLog je schopným protokolováním řešení v ekosystému MVVMCross, Microsoft.Extensions.Logging nabízí širší kompatibilitu, rozšiřitelnost a podporu komunity, což z něj činí všestrannější volbu pro potřeby protokolování v moderních aplikacích .NET.
Citace:[1] https://www.mvvmcross.com/documentation/fundamentals/logging-new
[2] https://putridparrot.com/blog/using-microsoft-extensions-logging/
[3] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[4] https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/extensions-logging
[5] https://stackoverflow.com/questions/58209076/Microsoft-Extensions-logging-vs-nllog
[6] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/46483019/logging-from-static-Members-with-microsoft-Logging
[9] https://www.mvvmcross.com/logging
[10] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-view-Get-linkhed-the-fiewModel/17602246
[11] https://blog.stephencleary.com/2018/06/Microsoft-extensions-part-2-Types.html