2009-08-11 25 views
32

Sto cercando come implementare la registrazione nella mia app C# - è una libreria di classi DLL. Quali sono i framework di registrazione più utilizzati: cosa offrirebbe agli utenti della mia DLL la massima flessibilità e configurabilità? Esiste un equivalente in C# di log4j?Qual è il framework di registrazione più utilizzato in C#?

+1

darei ReflectInsight un http prova: // http: //insightextensions.codeplex.com/ – code5

+0

C'è un elenco dei quadri di registrazione qui: https://github.com/quozd/awesome-dotnet/blob /master/README.md#logging –

risposta

29

Equivalente di log4j per piattaforma .NET è log4net e suppongo sia ampiamente utilizzato.


modifica (non dall'autore): Nel caso in cui non si desidera utilizzare log4net, qui ci sono una varietà di alternative da https://github.com/quozd/awesome-dotnet/blob/master/README.md#logging:

  • Essential Diagnostics - Estende le caratteristiche insite di System.Diagnostics spazio dei nomi per fornire la registrazione flessibile
  • NLog - NLog - Advanced .NET e Silverlight accedendo
  • Logazmic - Open source nLO g visualizzatore per Windows
  • ELMAH - Sito ufficiale ELMAH
  • Elmah MVC - Elmah per MVC
  • Logary - Logary è un rendimento elevato, la registrazione multi-target, metrica, tracciamento e la salute-check libreria per Mono e .NET. La risposta di .NET a DropWizard. Supporta molti obiettivi, creati per i micro-servizi.
  • Log4Net - La biblioteca log4net Apache è uno strumento per aiutare le dichiarazioni di registro di uscita programmatore ad una varietà di destinazioni di output
  • Serilog - Una libreria di registrazione no-nonsense per l'era NoSQL. Combina il meglio della registrazione diagnostica tradizionale e strutturata in un pacchetto facile da usare.
  • StackExchange.Exceptional - Error Handler utilizzato per la rete Stack Cambio
  • Semantic Logging Application Block (SLAB) - Estende le caratteristiche inbuilt di System.Diagnostics.Tracing namespace (classe EventSource) per accedere a diversi pozzi, tra cui tavoli da Azure, database, file (JSON, XML, testo). Supporta la registrazione in-process e out-of-process tramite ETW e Rx per il filtraggio/aggregazione degli eventi in tempo reale.
  • Foundatio - Un'API di registrazione fluente che può essere utilizzata per registrare i messaggi nell'intera applicazione.
  • Exceptionless - senza eccezioni .NET client
  • Loupe - la registrazione e il monitoraggio centralizzato .NET. [Proprietario][Livello libero]
  • elmah.io - registrazione cloud per le applicazioni .NET web utilizzando ELMAH. Trova bug prima di andare in diretta. Potente ricerca, API, integrazione con Slack, GitHub, Visual Studio e altro ancora. [Free for OSS][$]
  • BugSnag - registra gli errori. Include utili informazioni diagnostiche come stack trace, session, release, ecc. Ha un tier gratuito. [Gratuito per OSS] [$]
+2

Uso log4net in quasi tutte le mie applicazioni .NET. Tuttavia, le mie classi non contengono un riferimento a log4net direttamente, nascondo questo problema di infrastruttura dietro un'interfaccia e utilizzo l'iniezione di dipendenza. – JohnRudolfLewis

+0

Stiamo anche utilizzando log4net. È semplicemente fantastico. Incredibilmente flessibile, incredibilmente veloce. –

+0

usa log4net e non guardare mai indietro ... Non usa SO log4net? –

5

Sono stati utilizzati con successo NLog in numerosi progetti.

1

Sto usando NLog da anni con successo ed è molto ben fatto progetto.

3

Usiamo le nostre classi di registrazione, implementate chiamando log4net. Questo ci permette di trarre vantaggio da questo framework flessibile e ampiamente utilizzato evitando nel contempo migliaia di riferimenti diretti nel codice sorgente.

-1

Le persone utilizzano la libreria Enterprise estensivamente. Ma può essere vero che gli sviluppatori stanno passando ad altri prodotti in questi giorni.

Vorrei controllare e vedere se ha la funzionalità necessaria di cui hai bisogno e non troppo gonfiare.

2

Enterprise Library. E 'robusto e arriva direttamente da Microsoft con tutti i loro migliori pratiche inclusi. Lo usiamo in tutti i nostri progetti. E 'molto flessibile e v'è uno strumento di interfaccia utente che è possibile utilizzare nel caso in cui non si vuole pasticciare con la gestione di registrazione dal file di configurazione.

+1

Downvoting perché Enterprise Library non è robusto. È lento, aggiunge un overhead ridicolo e l'API non è eccezionale. –

+0

@John indipendentemente dalla tua opinione sulla libreria aziendale, è probabilmente il più utilizzato (probabilmente perché proviene direttamente da Microsoft) e fornisce la flessibilità e la configurabilità necessarie per la domanda. Credo che sia una risposta perfettamente valida alla domanda. – desigeek

+0

Che cosa rende ampiamente utilizzato? EntLib.Logging ha 280.000 download (https://www.nuget.org/packages/EnterpriseLibrary.Logging/) su NuGet rispetto a 2.6M per log4net (https://www.nuget.org/packages/log4net/). Infatti NLog ha 1.5M e Serilog ha 130K.La mia principale obiezione è che tu l'hai chiamata Robusto. Tutti i team con cui ho lavorato si sono pentiti di averlo usato. A proposito, "è lento e aggiunge overhead ridicolo" NON è un'opinione. –

3

log4net è quasi certamente il più comune.

ma io uso Common.Logging - http://netcommon.sourceforge.net/ quanto mi dà la flessibilità

Ci sono una varietà di registrazione implementazioni per .NET attualmente in uso , log4net, Enterprise Library registrazione, NLog, a nome il più popolare. L'aspetto negativo di avere differerent implementazione è che essi non condividono un'interfaccia comune e quindi impongono una particolare implementazione registrazione sugli utenti di tua libreria.

biblioteca Common.Logging introduce una semplice astrazione per consentire di selezionare una specifica implementazione di registrazione in fase di esecuzione. Così si possibile rinviare la decisione che cosa particolare libreria la registrazione per utilizzare fino distribuzione. Gli adattatori vengono utilizzati per che collega un particolare sistema di registrazione a Common.Logging.

+0

Qual è il vantaggio di posticipare la decisione? – BKSpurgeon

+1

Wow, questo ha più di 8 anni. Come detto Common.Logging (e lo fa ancora), è possibile rinviare la propria decisione fino allo spiegamento. Ad esempio; Forse vuoi inserire un whitelabel nel tuo sistema? E gli sviluppatori per la compagnia che vogliono ospitarli preferiscono Enterprise Library Logging, mentre un altro team di devops preferisce log4net. – gef

+0

Sono interessato all'utilizzo di Common.Logging (grazie per il suggerimento, BTW), ma sono stanco del sovraccarico di prestazioni sostenuto dal livello di astrazione/dalla risoluzione runtime. Sai forse qualche benchmark relativo a questo? –

Problemi correlati