2009-04-16 8 views
12

Sto testando ELMAH e ho deliberatamente disattivato la connessione al database per il log ELMAH nella mia applicazione per vedere cosa accadrà in produzione se il DB non è disponibile.Database ELMAH SQL Error Handler non disponibile: cosa succede alla registrazione?

Sembra che ELMAH non possa intercettare i propri errori: il file AXD non è disponibile quando il registro del database SQL non riesce.

Qual è il comportamento previsto di ELMAH se il database non è disponibile?

Come posso diagnosticare i miei errori se questo si verifica?

+1

+1 per pensare/testare gli scenari peggiori PRIMA che accadano! –

risposta

0

Non proprio sicuro di ELMAH, ma il comportamento previsto di tali quadri di registrazione non è di fare eccezioni se qualcosa va storto con loro. Cioè se il database di ELMAH è inattivo, presumo che non registrerà gli errori nel database.

Come suggerito sopra, è possibile/utilizzare lavandini alternativi - email o file flat.

0

È sempre possibile utilizzare l'opzione file xml per registrare i propri errori.

0

Penso che stai mescolando un po 'i contesti.

Il comportamento di ELMAH se il database non è disponibile è quello di non registrare errori nel database. Se un'eccezione viene lanciata sul server o se si genera un'eccezione tramite ErrorSignal, ELMAH lascerà passare tale eccezione a una schermata gialla oa una pagina di errori personalizzata (le impostazioni).

Since Errors.axd la pagina è accessibile solo a coloro che dovrebbero vederlo (idealmente,) è corretto presentare questo errore all'utente.

La riga di fondo è che se il database degli errori è inattivo non è possibile diagnosticare errori. Per noi, se così fosse, avremmo problemi più grandi dal momento che il database degli errori si trova nel database di produzione.


Vorrei anche evitare l'uso della registrazione XML per la fonte di registrazione principale. SQL Server ti offre le migliori prestazioni senza dover gestire i file. Con la registrazione XML non è il caso.

+0

Durante il debug con ELmah.dll nella directory web \ bin, l'app Web ha generato un errore in uno dei file di origine elmah (indicato dalle informazioni presenti da elmah.pdb) quando non è stato possibile accedere al database. Quindi - genererà un'eccezione non gestita. In questo caso altri logger ELMAH funzioneranno? – Caveatrob

+0

Non lo so, non ho mai provato a fallire. Il progetto Elmah è piuttosto solido, quindi sono sicuro che ci abbiano pensato. Dovrai solo scavare. –

12

Sembra che ELMAH non può intrappolare le proprie errori

ELMAH fa intercettare i propri errori in una certa misura. Se ErrorLogModule riscontra un'eccezione durante il tentativo di registrare l'errore, l'eccezione risultante dalla registrazione viene inviata alla funzione di traccia di .NET Framework standard. Vedi line 123 from 1.0 sources. Vedere anche il seguente walk-through dalla documentazione ASP.NET per ottenere il tracciamento .NET Framework standard di lavoro con ASP.NET tracciamento:

Walkthrough: Integrating ASP.NET Tracing with System.Diagnostics Tracing

il file AXD non è disponibile quando il Registro databse SQL non riuscito.

Che è corretto. La connettività del database SQL Server deve essere funzionale per visualizzare gli errori memorizzati in un database SQL Server quando si utilizza SqlErrorLog.

Qual è il comportamento previsto di ELMAH se il database non è disponibile?

Se, ad esempio, il database di SQL Server è inattivo, durante la registrazione si verificherà un SqlException. ELMAH invierà quindi il contenuto dell'oggetto SqlException alla funzione di traccia standard di .NET Framework.

Come posso diagnosticare i miei errori se si verifica questo ?

L'opzione migliore è quello di consentire anche la registrazione e di e-mail di errori. Se il database è inattivo, è probabile che il gateway di posta sia attivo e riceverai comunque una notifica degli errori. Gli errori, in effetti, avranno registrati in alcune cassette postali. Questo ha anche il vantaggio aggiunto che se il gateway di posta è mai abbassato, è probabile che il database sia attivo e gli errori vengano registrati lì. In entrambi i casi, tuttavia, sarà necessario rivedere seriamente l'infrastruttura di produzione ed eventualmente adottare misure per monitorare lo stato del sistema tramite misure aggiuntive.

Problemi correlati