Vedere questa domanda per un'altra risposta esauriente: When should I use Tracing vs Logger.NET, Enterprise Library, log4net or Ukadc.Diagnostics?
In breve, i principali quadri di registrazione disponibili sono il built-in .NET Framework System.Diagnostics, log4net, NLog e Enterprise Library Logging Application Block.
Un confronto di questi quadri principali è disponibile all'indirizzo: https://essentialdiagnostics.codeplex.com/wikipage?title=Comparison
1) Accedere gestione dei file
Tutti i principali quadri di cui sopra il supporto dei file a rotazione, ma penso che lasciano la pulizia a voi .
ad es. in passato ho utilizzato un lavoro programmato di Windows che utilizza robocopy con "/ mov/minage X" per spostare altrove i vecchi file, quindi eliminare o qualsiasi altra cosa.
EventSchemaTraceListener utilizzato in System.Diagnostics, che I blogged about recently, ha un'opzione LimitedCircularFiles, ma non molto supporto degli strumenti per la visualizzazione dei registri (sono in XML).
2) Possibilità di inviare messaggi di posta elettronica su certi tipi di messaggi registrati (errori, per esempio)
Tutti i principali quadri di cui sopra il supporto presente direttamente o tramite le estensioni (ascoltatori supplementari).
3) Capacità di scrivere messaggi al registro eventi di Windows
Anche in questo caso, tutti i quadri principali supportano questo, però io in genere sento di raccomandare che la scrittura nel registro eventi di Windows dovrebbe essere fatto direttamente e non via traccia.
Uno dei problemi è ciò che è stato chiesto per la creazione automatica di fonti.
Qualsiasi iscritto nel registro degli eventi (che attraversa EventLog.WriteEvent) sarà tentare automaticamente per creare l'origine del primo messaggio di log se non esiste - il problema è con la sicurezza, solo gli amministratori sono consentiti per creare sorgenti, quindi l'esecuzione come utente normale non riesce.
Per questo motivo è necessario aggiungere un EventLogInstaller, in modo che l'origine venga creata al momento dell'installazione (l'installazione viene eseguita dall'amministratore). Una volta creato, qualsiasi processo può quindi scrivere all'origine.
Questo quindi porta alla mia raccomandazione che è necessario creare e scrivere nel codice di accesso all'evento per garantire che la sorgente del registro eventi sia la stessa. Inoltre, se si scrive nel registro eventi in genere non si vuole essere in grado di "spegnerlo" attraverso l'errata configurazione.
Il mio consiglio personale è di default .NET Framework System.Diagnostics, in particolare il Service Trace Viewer è eccellente per la diagnosi di problemi, in particolare in ambienti multi-livello, multi-thread se si utilizza WCF dove può passare la correlazione identifica attraverso i livelli.
log4net è di gran lunga il più utilizzato e supporta tutti questi requisiti. È quello che userei, ma YMMV. – Thorarin
Prova questo: http://stackoverflow.com/search?q=[.net]+logging Troverete molte risposte interessanti. –
Duplicato, ma Cole W ha avanzato alcuni requisiti specifici a cui pensava, il che è bello riguardo a questa domanda. – Marijn