Qualcuno ha esperienza per entrambi? Come si sovrappongono?
Stiamo programmando di utilizzarne uno per accedere a un'applicazione enterprise.
Riferimenti:
EDIT: Non abbiamo dipendenze esistenti per nlog o log4net.
Qualcuno ha esperienza per entrambi? Come si sovrappongono?
Stiamo programmando di utilizzarne uno per accedere a un'applicazione enterprise.
Riferimenti:
EDIT: Non abbiamo dipendenze esistenti per nlog o log4net.
Risposte:
Recentemente mi è stato assegnato il compito di "prototipare un po 'di login" per un progetto imminente. Non ho avuto alcuna esperienza di framework di registrazione. Per alcuni giorni ho svolto ricerche, eseguito tutorial, realizzato app giocattolo ecc. Su Log4Net, NLog ed Enterprise Library. Sono tornato 3-4 settimane dopo e li hanno riuniti in una demo coerente. Spero che una parte di questo ti sia utile.
La mia raccomandazione per il nostro progetto è questa:
È basato su questi risultati (opinioni!):
Quindi ovviamente mi piace NLog finora. Tuttavia, non abbastanza per usarlo nonostante abbia a disposizione un'altra soluzione.
Una considerazione chiave che non è stata molto discussa è il supporto e gli aggiornamenti.
Log4Net non è stato aggiornato dalla versione 1.2.10 è stata pubblicata il 19 aprile 2006 .
Al contrario, NLog è stato attivamente supportato dal 2006 rilascerà presto NLog 2.0 che supporta molte piattaforme che non esistevano all'ultimo aggiornamento di log4net come:
Avendo avuto un'esperienza con entrambi i framework di recente, ho pensato di poter condividere le mie opinioni su ciascun framework.
Mi è stato chiesto di valutare i framework di registrazione per un'applicazione Web esistente, ho ristretto le mie scelte a NLog (v2.0) e log4net (v1.2.11) dopo aver attraversato vari forum online. Ecco i miei risultati:
Impostare / avviare con NLog è semplicissimo. Passa attraverso l'esercitazione introduttiva sul loro sito Web e hai finito. Hai una buona idea di come potrebbero essere le cose con nlog. Il file di configurazione è così intuitivo che chiunque può capire la configurazione. Ad esempio: se si desidera impostare l'accesso interno, impostare il flag nel nodo di intestazione del file di configurazione Nlog, che è dove ci si aspetterebbe che sia. In log4net, si impostano flag diversi nella sezione Impostazioni app di web.config.
In log4net, la registrazione interna non genera un timestamp che è fastidioso. In Nlog, ottieni un bel registro con i timestamp. L'ho trovato molto utile nelle mie valutazioni.
Filtri in log4net - Faresti meglio a controllare questa mia domanda - filtro log4net - come scrivere e filtrare per ignorare i messaggi di registro e se trovi una risposta / soluzione per questo, per favore fatemelo sapere. Capisco, c'è una soluzione per questa domanda, in quanto puoi scrivere il tuo filtro personalizzato. Ma qualcosa che non è facilmente disponibile in log4net.
Prestazioni: ho registrato circa 3000 messaggi di log nel database usando una procedura memorizzata. Ho usato semplice per il ciclo (int i = 0; i <3000; i ++ ... per registrare lo stesso messaggio 3000 volte. Per la scrittura: log4net AdoAppender ha impiegato quasi il doppio del tempo rispetto a NLog.
Log4net non supporta l'appender asincrono.
Per me è stato un confronto sufficiente scegliere NLog come framework di registrazione. :)
Per chiunque arrivi a questo thread in ritardo, potresti voler dare un'occhiata alla .Net Base Class Library (BCL). Molte persone hanno perso i cambiamenti tra .Net 1.1 e .Net 2.0 quando è stata introdotta la classe TraceSource (circa 2005).
L'uso di TraceSource è analogo ad altri framework di registrazione, con controllo granulare della registrazione, configurazione in app.config / web.config e accesso programmatico - senza l'overhead del blocco dell'applicazione aziendale.
Esistono inoltre numerosi confronti in giro: "log4net vs TraceSource"
Per noi, la differenza chiave sta nella perf generale ...
Logger.IsDebugEnabled
Dai un'occhiata a NLog contro Log4Net, dai nostri test, NLog ha meno costi generali ed è quello che stiamo cercando (cose a bassa latenza).
Saluti, Florian
Dai un'occhiata al resto del tuo stack.
Se si utilizza NHibernate, utilizza direttamente Log4Net. Altri framework potrebbero avere altri logger specifici di cui hanno bisogno.
Diverso da quello: entrambi funzionano bene.
Ho optato per Log4Net me stesso. Configurare può essere una seccatura, e se non è configurato correttamente è una seccatura capire cosa è andato storto. Ma puoi farlo fare quasi tutto ciò che vorresti da un logger.
Se non hai problemi permanenti con Log4Net, ecco un articolo che ho scritto su come iniziare: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Bene .. Ho usato la libreria Enterprise per le attività di registrazione del database e ora sono passato a NLog a causa di colli di bottiglia delle prestazioni.
alcune informazioni di confronto:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Mi associo a quanto sopra e preferisco nLog. Entlib è inutilmente gonfio.
Ri: Log4net Una cosa che SEMPRE mi ottiene con log4net è dimenticare di aggiungere quanto segue a global.asax per avviare il componente:
log4net.Config.XmlConfigurator.Configure();
Se vai qui puoi trovare una matrice completa che include sia le librerie NLog e Log4Net sia Enterprise Lib e altri prodotti.
Qualcuno potrebbe obiettare che la matrice è fatta in modo da sottolineare le caratteristiche dell'unica lib commerciale presente nella matrice. Penso che sia vero, ma è stato comunque utile guidare la mia scelta contro NLog.
Saluti
Come ho notato, log4net blocca i loro file di output per tutto il tempo in cui l'applicazione è in esecuzione, quindi non è possibile eliminarli. Altrimenti sono simili.
Quindi preferisco NLog.
Eseguo una spina spudorata per un progetto open source, ma data la vivace discussione su quale framework di logging .NET sia più attivo, ho pensato di pubblicare un link obbligatorio a Serilog .
Per utilizzare all'interno di un'applicazione, Serilog è simile a (e attinge molto) log4net. A differenza di altre opzioni di registrazione .NET, tuttavia, Serilog riguarda la conservazione della struttura degli eventi di registro per l'analisi offline. Quando scrivi:
Log.Information("The answer is {Answer}", 42);
La maggior parte delle librerie di log rende immediatamente il messaggio in una stringa. Anche Serilog può farlo, ma conserva la { Answer: 42 }
proprietà in modo che in seguito, utilizzando uno dei numerosi archivi di dati NoSQL, sia possibile eseguire correttamente la query degli eventi in base al valore di Answer
.
Siamo vicini alla 1.0 e supportiamo tutte le piattaforme moderne (.NET 4.5, Windows Store e Windows Phone 8).
Anch'io secondo NLog perché funziona anche con codice non gestito. Suppongo che potrebbe essere possibile utilizzare log4net e log4cxx insieme, ma NLog gestisce sia il codice gestito che quello non gestito.
Ho anche guardato Common.Logging , una facciata che rende l'astrazione dell'API di registrazione, supporta log4net, NLog e Entreprise Library. Non credo che lo userò, ma mi piace il modo in cui usano lambda per migliorare le prestazioni quando la registrazione è disabilitata (una funzione condivisa con NLog e probabilmente altri).
Potresti anche prendere in considerazione il Blocco registrazione librerie di Microsoft Enterprise . Viene fornito con un bel designer.
Sulla base della mia esperienza, SmartInspect batte sia NLog che log4net.
È estremamente facile da usare, la documentazione è fantastica e puoi visualizzare e filtrare i messaggi precedentemente registrati con il loro visualizzatore di log interattivo, il che è un enorme vantaggio del mondo reale.
Una cosa che mi piace è la visualizzazione a schede dei dati, come le schede del browser in Chrome. Ogni scheda può fornire una diversa visualizzazione filtrata del registro.