Při porovnání NLOG a Log4NET pro použití s MVVMCross se objeví několik rozdílů a úvah o výkonu:
1. Přehled výkonu:
- NLOG je obecně považován za rychlejší než log4net. Byl optimalizován pro rychlost a účinnost, takže je vhodný pro vysoce výkonné scénáře protokolování. Nejnovější verze NLOG dále zlepšily svou inicializační rychlost přeskočením automatického skenování rozšíření, pokud to není výslovně nutné [9] [10].
- Log4Net, i když je spolehlivý, má tendenci být pomalejší, zejména ve scénářích zahrnujících vysoký objem zpráv protokolu. Postrádá vestavěnou podporu asynchronního protokolování, která může ovlivnit výkon v souběžném prostředí [4] [10].
2. asynchronní protokolování:
-NLOG poskytuje vestavěnou podporu asynchronního protokolování, která je prospěšná pro aplikace, které vyžadují operace neblokující protokolování. Tato funkce pomáhá udržovat citlivost na aplikaci vykládáním psaní protokolu do vláken pozadí [1] [6].
- Log4Net nemá nativní schopnosti asynchronního protokolování. Uživatelé se musí spoléhat na externí balíčky nebo vlastní implementace, aby dosáhli asynchronizace protokolování, což může přidat složitost a režijní náklad [4].
3. Strukturované protokolování:
- NLOG podporuje strukturované protokolování, ačkoli to není tak robustní jako implementace Serilogu. Strukturované protokolování společnosti NLOG lze dosáhnout prostřednictvím jeho vykreslených rozvržení a vlastností, které umožňují sémantické protokolování bez další režie [6] [7].
- Log4Net neodmyslitelně nepodporuje strukturované protokolování. I když může být rozšířen o vlastní dodavatele k dosažení určité úrovně strukturovaného protokolování, není tak přímý nebo efektivní jako Nlog nebo Serilog [7].
4. konfigurace a nastavení:
- NLOG nabízí modernější API a je obecně snazší konfigurovat, zejména pro vývojáře, kteří jsou obeznámeni s jádrem .NET Core nebo ASP.NET. Jeho konfigurace lze provést prostřednictvím XML, JSON nebo kódu [1] [7].
- Log4net má tradiční konfigurační přístup, především pomocí XML. I když je široce přijímán a má rozsáhlé zdroje, jeho konfigurace může být pro některé uživatele těžkopádnější [7].
5. Komunita a podpora:
- Oba rámce mají velké komunity, ale NLOG má tendenci mít aktivnější rozvoj a vydání. To může být důležité pro projekty vyžadující pokračující podporu a aktualizace [11].
- Log4Net je zralý a široce používán, ale jeho uvolňovací cyklus je ve srovnání s NLOG pomalejší [11].
Stručně řečeno, NLOG nabízí lepší výkon, schopnosti asynchronního protokolování a strukturovanou podporu protokolování, což z něj činí vhodnější volbu pro projekty s vysokými požadavky na protokolování nebo ty, které se integrují do moderních prostředí .NET. Log4Net, i když je spolehlivý a široce přijat, může vyžadovat více vlastní práce pro pokročilé funkce a postrádá výkonový okraj NLOG. U projektů MVVMCross by se výhody NLOG v rychlosti a flexibilitě mohly učinit výhodnějším možností, pokud konkrétní požadavky nebo stávající infrastruktura laskavost Log4Net.
Citace:[1] https://wirefuture.com/post/mastering-application-insights-logging-using-nlog-log4Net-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-logging-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-libraries/
[9] https://nlog-project.org/2021/08/25/nlog-5-0-review1-ready.html
[10] https://hansamaligamage.github.io/2016/05/29/nlog-configurations/
[11] https://michaelscodingspot.com/logging-in-dotnet/