Salīdzinot NLOG un log4net lietošanai ar MVVMCross, rodas vairākas veiktspējas atšķirības un apsvērumi:
1. Veiktspējas pārskats:
- NLOG parasti tiek uzskatīts par ātrāku nekā log4net. Tas ir optimizēts ātrumam un efektivitātei, padarot to piemērotu augstas veiktspējas reģistrēšanas scenārijiem. NLOG jaunākās versijas ir vēl vairāk uzlabojušas savu inicializācijas ātrumu, izlaižot automātisku pagarinājumu skenēšanu, ja vien nav skaidri nepieciešama [9] [10].
- Log4net, kaut arī uzticams, mēdz būt lēnāks, it īpaši scenārijos, kas saistīti ar lielu žurnālu ziņojumu daudzumu. Tam trūkst iebūvēta asinhrona mežizstrādes atbalsta, kas var ietekmēt veiktspēju vienlaicīgā vidē [4] [10].
2. Asinhronā mežizstrāde:
-NLOG nodrošina iebūvētu asinhrono mežizstrādes atbalstu, kas ir izdevīgs lietojumprogrammām, kurām nepieciešama bloķējoša reģistrēšanas operācijas. Šī funkcija palīdz uzturēt lietojumprogrammu reakciju, izkraut žurnāla rakstīšanu uz fona pavedieniem [1] [6].
- Log4net nav vietējo asinhronu mežizstrādes iespēju. Lietotājiem jāpaļaujas uz ārējām paketēm vai pielāgotām ieviešanām, lai sasniegtu async reģistrēšanu, kas var pievienot sarežģītību un pieskaitāmās izmaksas [4].
3. strukturēta mežizstrāde:
- NLOG atbalsta strukturētu mežizstrādi, lai gan tā nav tik spēcīga kā Seriloga ieviešana. NLOG strukturēto mežizstrādi var panākt, izmantojot tā izkārtojuma atveidotājus un īpašības, kas ļauj semantisku reģistrēšanu bez papildu pieskaitāmām izmaksām [6] [7].
- log4net pēc būtības neatbalsta strukturētu mežizstrādi. Lai gan to var paplašināt ar pielāgotiem pielikumiem, lai sasniegtu zināmu strukturētas mežizstrādes līmeni, tas nav tik vienkārši vai efektīvs kā NLOG vai serilog [7].
4. Konfigurācija un iestatīšana:
- NLOG piedāvā modernāku API, un to parasti ir vieglāk konfigurēt, īpaši izstrādātājiem, kas pārzina .NET Core vai ASP.NET Core. Tās konfigurāciju var veikt, izmantojot XML, JSON vai kodu [1] [7].
- log4net ir tradicionālāka konfigurācijas pieeja, galvenokārt izmantojot XML. Lai arī tas ir plaši pieņemts un tam ir plaši resursi, tā konfigurācija dažiem lietotājiem var būt apgrūtinošāka [7].
5. Kopiena un atbalsts:
- Abiem ietvariem ir lielas kopienas, bet NLOG parasti ir aktīvāka attīstība un izlaidumi. Tas var būt svarīgi projektiem, kuriem nepieciešams pastāvīgs atbalsts un atjauninājumi [11].
- log4net ir nobriedis un plaši izmantots, bet tā izdalīšanās cikls ir lēnāks, salīdzinot ar NLOG [11].
Rezumējot, NLOG piedāvā labāku sniegumu, asinhronās mežizstrādes iespējas un strukturētu mežizstrādes atbalstu, padarot to par piemērotāku izvēli projektiem ar augstām reģistrēšanas prasībām vai tiem, kas integrējas ar modernu .NET vidi. Lai arī log4net, lai arī tas ir uzticams un plaši pieņemts, var būt nepieciešams vairāk pielāgotu darbu uzlabotām funkcijām, un tam trūkst NLOG veiktspējas malas. MVVMCROSS projektiem NLOG priekšrocības ātrumā un elastībā var padarīt to par vēlamo iespēju, ja vien īpašas prasības vai esošā infrastruktūra atbalsta log4net.
Atsauces:[1] https://wirefuture.com/post/mastering-application-inights-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-preview1-ready.html
[10] https://hansamaligamage.github.io/2016/05/29/nlog-configurations/
[11] https://michaelscodingspot.com/logging-in-dotnet/