Benchmarking 5 popolari librerie di logging. NET

Diversi framework di logging promettono ai codificatori. NET una soluzione “configurazione e avvio di registrazione di cinque minuti” per i loro progetti. Abbiamo deciso di testare questi framework per identificare la velocità e la convenienza tra di loro. Abbiamo aggiunto praticità nell’equazione perché la maggior parte dei codificatori.NET sa che possono scrivere eventi nel visualizzatore eventi di Windows senza implementare librerie aggiuntive. Questa è la massima praticità e affidabilità. Tuttavia, la scrittura nel visualizzatore eventi non sempre funziona per alcune applicazioni – ad esempio, potresti voler scrivere eventi in un file di registro da condividere con altri reparti o eseguire analytics su un gruppo di registri.

Quali Registrazione, Quadri Abbiamo Testato

Abbiamo deciso di testare la top five di registrazione quadri sul mercato:

  • Log4net
  • ELMAH
  • NLog
  • Microsoft Enterprise Library
  • NSpring

Se hai mai lavorato con enterprise registrazione .NET, è probabilmente riconoscere uno o due di queste librerie. Per questo test, abbiamo scritto eventi di errore nei file per ogni test del framework, anche se ELMAH scrive automaticamente nei file a meno che non si dica specificamente di accedere a SQL. L’integrazione SQL di ELMAH lo rende uno dei nostri preferiti personali, ma volevamo mantenere il livello di campo di gioco e utilizzare solo i file locali.

Il nostro ambiente di test

Volevamo dare a questi test di benchmark un ambiente rappresentativo del mondo reale, quindi li abbiamo testati su un server che ospita tre applicazioni web. L’ambiente ospita anche SQL Server e MySQL per le tre applicazioni. Per simulare il carico della CPU, abbiamo ancora impostato un processo filettato separato che ha generato numeri primi mentre i test sono stati eseguiti e cronometrati. L’ambiente di lavoro rappresenta numeri più alti rispetto ad altri benchmark, ma troviamo che è più fedele alla vita della semplice generazione di numeri primi.

Il nostro server di produzione è un server Windows 2008 con 8 GB di RAM e un processore Intel i5 con quattro core, un core per ogni thread. Le applicazioni sono state create utilizzando Visual Studio 2012. Log4net, NLog, Microsoft Enterprise Library e NSpring sono stati tutti benchmark su applicazioni console. ELMAH è un web logger, quindi questa applicazione è stata eseguita su un’applicazione Web in. NET 4.5. Abbiamo anche usato C# come framework della lingua primaria.

Non abbiamo fatto molte configurazioni ai framework stessi. Abbiamo scelto le librerie disponibili in NuGet, quindi gli sviluppatori non hanno avuto bisogno di scaricare librerie specifiche e integrare DLL e soluzioni di terze parti nel progetto principale.

Il progetto consisteva solo delle librerie necessarie per.NET per compilare ed eseguire il codice. Il codice conteneva un ciclo che iterava attraverso 100.000 eventi di debug in scrittura per ciascun framework. Un metodo separato gestiva il thread del numero primo.

Abbiamo eseguito tre test su ciascun framework e utilizzato i risultati medi.

I nostri risultati dei test

In primo luogo, dare un’occhiata al grafico qui sotto, e vedrete il chiaro vincitore.

netchart

NLog è stato il più veloce e dobbiamo dire che è stato uno dei metodi di registrazione più convenienti. NLog ha veramente sostenuto la sua affermazione che è possibile avviare la registrazione degli eventi in pochi minuti. Per far funzionare NLog con l’applicazione sono state necessarie due righe di codice: una riga per istanziare la classe logger principale e l’altra per registrare gli eventi. Non solo è stato facile da configurare, ma ci sono voluti solo circa 9 secondi per completare 100.000 iterazioni.

Log4net era altrettanto conveniente, ma ha perso in termini di prestazioni. Abbiamo provato sia gli eventi di debug che di errore con log4net e la registrazione di debug è stata in realtà più veloce degli eventi di errore standard. Rispetto ai suoi concorrenti, log4net potrebbe utilizzare alcune prestazioni tweaking da parte degli sviluppatori soprattutto per le applicazioni aziendali. Era altrettanto conveniente come NLog, ma non poteva competere sulle prestazioni.

Il nostro terzo preferito è NSpring. NSpring era facile da configurare, ma richiedeva molto più codice per funzionare con esso. È necessario aprire e chiudere gli eventi Nspring logger, che non è necessario fare con gli altri. Alcune righe di codice in più in una semplice applicazione non sono un problema, ma l’apertura e la chiusura delle variabili del logger possono essere noiose per le applicazioni aziendali.

Dei framework che abbiamo testato in un’applicazione console, la libreria nativa Microsoft Enterprise era la nostra preferita. Ha i secondi tempi più veloci, ma è stato estremamente scomodo. Microsoft ha recentemente cambiato il modo in cui funziona il suo framework dalla versione 5 alla 6. Nella versione 5.0, il codificatore poteva effettuare una chiamata statica per registrare le funzioni, ma abbiamo incontrato numerosi ostacoli per far funzionare EntLib con la versione 6.0. Il tempo di installazione per EntLib riduce questa libreria anche se è stata la seconda più veloce.

Il framework finale è ELMAH. ELMAH era originariamente il nostro preferito fino a quando abbiamo testato NLog. ELMAH è un web logger, quindi funziona in modo un po ‘ diverso rispetto agli altri. Scrive su un file XML per impostazione predefinita, il che potrebbe anche spiegare alcuni dei suoi ritardi.

Conclusione

Per le applicazioni pesanti che richiedono la registrazione dei file e la velocità, NLog è stato chiaramente il vincitore. NLog ha anche un buon supporto da parte della comunità con integrazioni per soluzioni di gestione dei log come Loggly. Se per qualsiasi motivo NLog non è la tua scelta, vai invece con NSpring. Questi due framework sono chiaramente i più veloci. Avremmo scelto log4net come la nostra prima scelta se non fosse stato per le prestazioni lente. E ‘ stato uno dei più facili da configurare.

Tutti questi framework sono disponibili in NuGet, quindi puoi provarli tu stesso.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.