Domanda

Sto cercando il modo migliore per registrare gli errori in un ASP.NET applicazione.Voglio essere in grado di ricevere e-mail quando si verifica un errore nella mia applicazione, con informazioni dettagliate circa l'Eccezione e la corrente Richiesta.

Nella mia azienda abbiamo utilizzato per avere il nostro proprio ErrorMailer, la cattura di tutto il Mondiale.asax Application_Error.È stato "Ok", ma non è molto flessibile, né è configurabile.

Abbiamo passato di recente a NLog.È molto più configurabile, siamo in grado di definire obiettivi diversi per gli errori, li filtra, buffer loro (non ho ancora provato).Si tratta di un ottimo miglioramento.

Ma ho scoperto ultimamente che c'è un intero spazio dei nomi nel .Net framework per questo scopo : Sistema.Web.Gestione e può essere configurato in healthMonitoring sezione del web.config.

Hai mai lavorato con .Netto di monitoraggio della salute?Qual è la tua soluzione per la registrazione degli errori?

È stato utile?

Soluzione

Io uso elmah.Ha alcune caratteristiche davvero piacevole e qui è un CodeProject articolo su di esso.Penso StackOverflow team utilizza elmah anche!

Altri suggerimenti

Sto usando Log4net, configurato per e-mail i dettagli di errori fatali.È anche impostato per registrare tutte le informazioni in un file di log, che è inestimabile quando si tenta di eseguire il debug di problemi.L'altro vantaggio è che se questa funzionalità standard non fare ciò che si desidera, è abbastanza facile scrivere un custom appender in grado di elaborare le informazioni di registrazione, come richiesto.

Detto questo, sto usando questo in tandem con un custom error handler che invia una e-mail html con un po ' di più informazioni rispetto a quelle incluse negli standard log4net e-mail - pagina, le variabili di sessione, cookie, server http variabili, etc.

Questi sono entrambi collegati al Application_OnError evento, in cui l'eccezione è registrato come un errore irreversibile in log4net (che poi la fa essere inviate a un indirizzo di posta elettronica specificato), e gestita anche tramite il gestore degli errori personalizzato.

Sentito parlare per la prima Elmah dal Coding Horror blog, Crash In Modo Responsabile, e anche se sembra promettente sto ancora attuazione di eventuali progetti.

Sto usando l'Enterprise Library oggetti di Registrazione.Permette di avere diversi tipi di registrazione (file di testo, e-mail, e/o di un database).È abbastanza personalizzabile e ha una buona interfaccia per l'aggiornamento del sito web.config per la configurazione della registrazione.Di solito io chiamo la mia registrazione da l'Errore nel Mondiale.asax.

Ecco un link MSDN

Io uso log4net e dove mai ho aspettiamo un'eccezione accedere al livello appropriato.Io tendo a non ri-lanciare l'eccezione, perché davvero non consente per esempio di piacevole esperienza utente, c'è meno informazioni è possibile fornire allo stato attuale.

Dovrò Application_Error configurato anche per intercettare le eccezioni che non era previsto, e l'errore viene registrato come un Fatale priorità attraverso log4net (beh, 404 vengono rilevati e registrati come Info, non sono che l'alto livello di gravità).

Il mio team usa log4net da Apache.E ' abbastanza leggero e di facile installazione.Migliore di tutti, è completamente configurabile dal web.file di configurazione, in modo che una volta che hai i ganci nel codice di installazione, è possibile cambiare completamente il modo di registrazione è fatto solo cambiando il web.file di configurazione.

log4net supporta la registrazione di una vasta gamma di posizioni di database, e-mail, file di testo, registro eventi di Windows, etc.La mia squadra è configurato per l'invio di informazioni dettagliate sull'errore di un database, e anche inviare una email a tutta la squadra con informazioni sufficienti per determinare in quale parte del codice dell'origine dell'errore.Quindi noi sappiamo chi è responsabile di quel pezzo di codice, e possono andare al database per ottenere informazioni più dettagliate.

Recentemente ho costruito un asp.net webservice con NLog, che io uso per tutte le mie applicazioni desktop.La registrazione funziona bene quando sto debug in Visual Studio, ma appena mi passa a IIS il file di log non è stato creato;Non ho ancora stabilito perché, ma il fatto che ho bisogno di cercare una soluzione, mi viene voglia di provare qualcosa di diverso per il mio asp.net esigenze!

Usiamo EnterpriseLibrary.Gestione delle eccezioni.Registrazione.Mi piace un po ' meglio di log4net perché non solo non abbiamo il controllo della registrazione completamente, ma siamo in grado di controllare il Tiro/NoThrow decisione entro config così.

Usiamo un custom homegrown registrazione util abbiamo scritto.Si richiede di implementare la registrazione sul proprio ovunque ne avete bisogno.Ma, si permette anche di catturare molto di più che l'eccezione.

Per esempio il nostro codice sarebbe simile a questa:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

In questo modo il nostro logger scrivere tutte le informazioni che abbiamo bisogno di un database SQL.Abbiamo avvisi e-mail di impostare il livello di DB per la ricerca per alcuni errori o frequenti errori.Essa ci aiuta a identificare esattamente dove gli errori sono provenienti da.

Questo potrebbe non essere esattamente quello che stai cercando.Un altro approccio simile all'utilizzo Globale.asax è per noi una iniezione di codice come tecnica AOP con PostSharp.Questo consente di inserire codice personalizzato all'inizio e alla fine di ogni metodo o su ogni eccezione.È un approccio interessante, ma credo che possa avere un pesante impatto sulle prestazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top