Palyginus NLOG ir LOG4NET naudojimą su MVVMCross, atsiranda keli našumo skirtumai ir svarstymai:
1. Veiklos apžvalga:
- NLOG paprastai laikomas greitesniu nei „Log4Net“. Jis buvo optimizuotas siekiant greičio ir efektyvumo, todėl jis buvo tinkamas didelio našumo registravimo scenarijams. Naujausios NLOG versijos dar labiau pagerino inicijavimo greitį, praleisdami automatinį plėtinių nuskaitymą, nebent tai būtų aiškiai reikalinga [9] [10].
- „Log4Net“, nors ir patikimas, paprastai būna lėtesnis, ypač scenarijuose, kuriuose yra didelis žurnalo pranešimų apimtis. Jame trūksta įmontuotos asinchroninės medienos ruošos palaikymo, kuris gali paveikti našumą tuo pačiu metu [4] [10].
2. Asinchroninis medienos ruoša:
-„NLOG“ teikia įmontuotą asinchroninį registravimo palaikymą, kuris yra naudingas programoms, kurioms reikalingos ne blokuojančios registravimo operacijos. Ši funkcija padeda išlaikyti reagavimą į programą, perkeldama žurnalo rašymą į fono gijas [1] [6].
- „Log4Net“ neturi vietinių asinchroninių miško kirtimo galimybių. Norėdami pasiekti „Async“ registravimą, vartotojai turi pasikliauti išoriniais paketais ar pasirinktinėmis diegimais, kurie gali padidinti sudėtingumą ir pridėtines išlaidas [4].
3. Struktūrizuotas registravimas:
- NLOG palaiko struktūrizuotą registravimą, nors jis nėra toks tvirtas kaip „Serilog“ įgyvendinimas. NLOG struktūrizuotą registravimą galima pasiekti naudojant jo išdėstymo teikėjus ir savybes, kurios leidžia semantinį registravimą be papildomų pridėtinių išlaidų [6] [7].
- „Log4Net“ iš esmės nepalaiko struktūrizuoto registravimo. Nors jis gali būti pratęstas naudojant pasirinktinius priedus, kad būtų pasiektas tam tikras struktūrizuoto registravimo lygis, jis nėra toks tiesus ar efektyvus kaip NLOG ar Serilog [7].
4. Konfigūracija ir sąranka:
- NLOG siūlo modernesnę API ir paprastai yra lengviau konfigūruojama, ypač kūrėjams, susipažinusiems su .NET Core arba ASP.NET Core. Jos konfigūraciją galima atlikti naudojant XML, JSON arba kodą [1] [7].
- „Log4Net“ turi tradiciškesnį konfigūracijos metodą, pirmiausia naudojant XML. Nors kai kuriems vartotojams jis yra plačiai priimamas ir turi didelius išteklius, jo konfigūracija gali būti sudėtingesnė [7].
5. Bendruomenė ir palaikymas:
- Abiejose sistemose yra didelės bendruomenės, tačiau NLOG paprastai turi aktyvesnę plėtrą ir leidimus. Tai gali būti svarbu projektams, kuriems reikalingas nuolatinis palaikymas ir atnaujinimai [11].
- „Log4Net“ yra subrendęs ir plačiai naudojamas, tačiau jo išsiskyrimo ciklas yra lėtesnis, palyginti su NLOG [11].
Apibendrinant galima pasakyti, kad NLOG siūlo geresnes našumus, asinchronines medienos ruošos galimybes ir struktūrizuotą registravimo palaikymą, todėl tai yra tinkamesnis pasirinkimas projektams, turintiems didelius registravimo reikalavimus, arba integruojant su šiuolaikine .NET aplinka. „Log4Net“, nors ir patikimas ir plačiai priimtas, gali prireikti daugiau pasirinktinių darbų, kad būtų išplėstinės funkcijos, ir jam trūksta NLOG našumo krašto. „MVVMCross“ projektams „Nlog“ greičio ir lankstumo pranašumai gali tai padaryti tinkamesniu pasirinkimu, nebent konkrečiais reikalavimais ar esama infrastruktūra palaiko „Log4Net“.
Citatos:[1] https://wirefuture.com/post/masterling-application-insights-gogging-sing-nlog-gog4net-and--erilog
[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-gogging-library
[6] https://www.bytehide.com/blog/serilog-gog4net-nlog-comparion
[7] https://blog.elmah.io/nlog-vs-gog4net/
[8] https://betterstack.com/community/guides/logging/best-dotnet-gogging-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/