Pri porovnaní NLOG a Log4Net na použitie s MVVMCross sa objavia niekoľko rozdielov a úvahy o výkone:
1. Prehľad výkonu:
- NLOG sa všeobecne považuje za rýchlejšie ako log4net. Bola optimalizovaná pre rýchlosť a efektívnosť, vďaka čomu je vhodná pre vysokovýkonné scenáre protokolovania. Najnovšie verzie NLOG ďalej zlepšili svoju inicializačnú rýchlosť preskočením automatického skenovania rozšírení, pokiaľ to nie je výslovne potrebné [9] [10].
- Log4Net, hoci je spoľahlivý, má tendenciu byť pomalšie, najmä v scenároch zahŕňajúcich vysokú hlasitosť správ denníka. Chýba vstavaná asynchrónna podpora ťažby dreva, ktorá môže ovplyvniť výkon v súbežných prostrediach [4] [10].
2. Asynchrónne protokolovanie:
-NLOG poskytuje zabudovanú asynchrónnu podporu protokolovania, ktorá je prospešná pre aplikácie, ktoré si vyžadujú blokovanie blokovania. Táto funkcia pomáha udržiavať reakciu aplikácií tým, že vykladá písanie protokolov do vlákien na pozadí [1] [6].
- Log4Net nemá natívne asynchrónne možnosti protokolovania. Používatelia sa musia spoliehať na externé balíčky alebo vlastné implementácie, aby dosiahli asynchrónne protokolovanie, ktoré môžu pridať zložitosť a režijné náklady [4].
3. Štruktúrované protokolovanie:
- NLOG podporuje štruktúrované protokolovanie, hoci nie je taká robustná ako implementácia Serilogu. Štruktúrované protokolovanie NLOG sa dá dosiahnuť prostredníctvom jeho vykresľovačov a vlastností rozloženia, ktoré umožňujú sémantické protokolovanie bez ďalších režijných nákladov [6] [7].
- Log4Net nepodporuje štruktúrované protokolovanie. Aj keď sa dá rozšíriť s vlastnými príveskami, aby sa dosiahla určitá úroveň štruktúrovaného protokolovania, nie je taká priama alebo efektívna ako Nlog alebo Serilog [7].
4. Konfigurácia a nastavenie:
- NLOG ponúka modernejšie rozhranie API a vo všeobecnosti sa dá ľahšie nakonfigurovať, najmä pre vývojárov oboznámených s Core .NET Core alebo ASP.NET Core. Jeho konfiguráciu je možné vykonať prostredníctvom XML, JSON alebo Code [1] [7].
- Log4Net má tradičnejší konfiguračný prístup, primárne pomocou XML. Aj keď je široko prijatá a má rozsiahle zdroje, jej konfigurácia môže byť pre niektorých používateľov ťažkopádna [7].
5. Komunita a podpora:
- Oba rámce majú veľké komunity, ale NLOG má tendenciu mať aktívnejší vývoj a vydania. To môže byť dôležité pre projekty, ktoré si vyžadujú pokračujúcu podporu a aktualizácie [11].
- Log4Net je zrelý a široko používaný, ale jeho cyklus uvoľňovania je pomalší v porovnaní s NLOG [11].
Stručne povedané, NLOG ponúka lepší výkon, asynchrónne možnosti protokolovania a štruktúrovanú podporu protokolovania, vďaka čomu je vhodnejšou voľbou pre projekty s vysokými požiadavkami na ťažbu ťažby alebo tých, ktoré sa integrujú do moderných prostredí .NET. Log4Net, hoci je spoľahlivý a široko prijatý, môže vyžadovať viac vlastnej práce pre pokročilé funkcie a chýba mu hrana výkonnosti NLOG. V prípade projektov MVVMCross by výhody spoločnosti NLOG v rýchlosti a flexibilite mohli urobiť zhodnou možnosťou, pokiaľ konkrétne požiadavky alebo existujúca infraštruktúra uprednostňujú log4Net.
Citácie:[1] https://wirefuture.com/post/mastering-application-insights-logging-using-using-nog-mog4net-and-serilog
[2] https://www.reddit.com/r/dotnet/comments/9cziy4/nlog_vs_log4net_vs_serilog_compare_net_logging/
[3] https://blog.ndepend.com/log4net-vs-nlog/
[4] https://stackoverflow.com/questions/710863/log4net-vs-nlog
[5] https://kellermansoftware.com/products/net-mogging-library
[6] https://www.bytehide.com/blog/serilog-log4net-nlog-comparison
[7] https://blog.elmah.io/nlog-vs-log4net/
[8] https://betterstack.com/community/guides/logging/best-dotnet-logging-library/
[9] https://nlog-project.org/2021/08/25/nlog-5-0-preview1-ready.html
[10] https://hansamaligamage.github.io/2016/05/29/nlog-configurations/
[11] https://michaelscodingspot.com/logging-in-dotnet/