2010-11-01 4 views
12

J'utilise ELMAH dans mes projets ASP.NET MVC et j'aime beaucoup sa simplicité. Mais j'avais besoin de pouvoir enregistrer certains événements dans mon code de manière log.Info ("message"). Puisque ELMAH ne fournit pas cette capacité, j'ai commencé à regarder NLog.Consignation des exceptions non gérées à l'aide de NLog? Est-ce que ELMAH et NLog devraient être utilisés ensemble?

Quelques questions me sont venues à l'esprit:

  1. est d'utiliser les deux ELMAH et NLog surpuissant? Utiliser ELMAH pour les exceptions non gérées et NLog pour tout le reste?
  2. Est-il possible de configurer NLog pour consigner des exceptions non gérées dans nlog.config ou un code personnalisé est-il nécessaire?
  3. Si le code personnalisé est nécessaire où serait le meilleur endroit pour l'ajouter? La méthode OnException dans le cadre MVC? Le fichier global.asax?

La rétroaction d'Anny est grandement appréciée. Jusqu'à présent, je n'ai pas trouvé de bons messages à ce sujet?

Répondre

4

Vous pouvez en fait déclencher une alerte d'ELMAH. Comme si:

ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex)); 

Ne pas oublier d'ajouter une référence à elmah.dll et ajouter using Elmah; au fichier. Voir here pour un peu plus d'exemples.

15

En répondant à la question numéro 2, je viens de lire this article où il explique comment enregistrer des exceptions non traitées avec NLog. Fondamentalement, ajoute dans le fichier Global.asax.cs quelque chose comme:

protected void Application_Error() 
{ 
    Exception lastException = Server.GetLastError(); 
    NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); 
    logger.Fatal(lastException); 
} 
Questions connexes