2012-01-10 15 views
7

DotNetNuke fornisce una struttura di registrazione degli errori integrata? Il mio cliente utilizza DotNetNuke e non vedo un framework di registrazione degli errori globale. Vedo la classe qui sotto con alcuni try/catch che li usano.DotNetNuke e registrazione degli errori

namespace DotNetNuke.Services.Exceptions 
{ 
    [StandardModule] 
    public sealed class Exceptions 
    { 
     public static ExceptionInfo GetExceptionInfo(Exception e); 
     public static void LogException(Exception exc); 
     public static void LogException(ModuleLoadException exc); 
     public static void LogException(PageLoadException exc); 
     public static void LogException(SchedulerException exc); 
     public static void LogException(SecurityException exc); 
     public static void LogSearchException(SearchException exc); 
     public static void ProcessModuleLoadException(Control ctrl, Exception exc); 
     public static void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase, Exception exc); 
     public static void ProcessModuleLoadException(Control ctrl, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessModuleLoadException(string FriendlyMessage, Control ctrl, Exception exc); 
     public static void ProcessModuleLoadException(string FriendlyMessage, Control ctrl, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessModuleLoadException(string FriendlyMessage, PortalModuleBase objPortalModuleBase, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessPageLoadException(Exception exc); 
     public static void ProcessPageLoadException(Exception exc, string URL); 
     public static void ProcessSchedulerException(Exception exc); 
    } 
} 

risposta

19

Log4Net è disponibile, ma la maggior parte dei moduli utilizzare la classe eccezioni personalizzate all'interno di DNN che memorizza "eventi" nella tabella EventLog, è possibile accedere al rapporti per "eventi" inclusi errori, dalla pagina Admin/Visualizzatore eventi.

In genere all'interno di un modulo si farebbe qualcosa di simile al seguente.

try 
{ 
    //STUFF HERE 
} 
catch (Exception exc) //Module failed to load 
{ 
    Exceptions.ProcessModuleLoadException(this, exc); 
} 
+0

Ciao Chris, ho visto questo nel tuo modello e sono lieto di essere venuto a sapere cosa sta effettivamente facendo. Nella domanda OP ci sono definizioni di funzioni che includono "FriendlyMessage". Questo campo ha lo scopo di consentire allo sviluppatore di registrare ulteriori dettagli o è ciò che viene visualizzato all'utente quando si verifica l'errore. Se non è un posto per informazioni personalizzate sull'eccezione, c'è? – RacerNerd

+0

@RacerNerd Non ho provato a utilizzare friendlymessage prima, ma suppongo che sarebbe ciò che viene visualizzato all'utente finale quando si verifica un problema –

4

E 'stato molto tempo da quando il post originale di questo e dopo aver fatto qualche ricerca per me credo che ho trovato una risorsa migliore e più recente rispetto alla risposta accettata. Quanto segue include un po 'più di informazioni su come ottenere Log4Net configurato e integrato nei tuoi moduli, http://www.dnnsoftware.com/community-blog/cid/141723/Using-log4net-with-DotNetNuke.

Sembra che un vantaggio dell'utilizzo dell'approccio Log4Net sia la possibilità di configurare il livello di registrazione in modo che le applicazioni possano essere più facilmente esaminate e debuggate. Questo può essere particolarmente utile quando si spostano le applicazioni tra gli ambienti. L'ho usato durante il debug di un'applicazione su un server in cui non posso collegarmi al processo e interrompere l'applicazione per il debug. Alzo il livello di registrazione e lavoro con le informazioni nel registro. Questo può essere doloroso un modo doloroso per eseguire il debug, ma davvero utile quando sei bloccato.

In DNN 7 la classe DnnLog menzionata qui è ammortizzata in modo da poter esplorare probabilmente le alternative.

Sembra che la classe di eccezioni personalizzate sia destinata alle eccezioni che devono essere registrate in tutti i casi. Ho trovato questo articolo leggermente più vecchio che è probabilmente ancora pertinente se è necessario registrare le informazioni personalizzate, http://www.ifinity.com.au/Blog/EntryId/114/Creating-Exception-Logging-with-DotNetNuke. Alcune classi dovranno essere aggiornate, ma la tecnica complessiva sembra buona e va più in linea con il suggerimento di Chris sopra. Con un piccolo ritocco questo esempio potrebbe essere utilizzato per implementare un livello di registrazione configurabile.

+0

È possibile utilizzare DnnLogger o LoggerSource in DNN 7: http://stackoverflow.com/a/ 19237590/443379 – Valentin

Problemi correlati