Je peux vous suggérer d'utiliser elmah. C'est génial pour la journalisation des erreurs, vous pouvez lire à ce sujet à partir d'ici: http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx
Ce que j'ai fait, et je suis heureux avec elle est la suivante. Je l'ai fait un attribut d'erreur de poignée personnalisée, qui a le code suivant:
public class HandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
var e = context.Exception;
if (!context.ExceptionHandled // if unhandled, will be logged anyhow
|| ExceptionHelper.RaiseErrorSignal(e) // prefer signaling, if possible
|| IsFiltered(context)) // filtered?
return;
ExceptionHelper.LogException(e);
}
private static bool IsFiltered(ExceptionContext context)
{
var config = context.HttpContext.GetSection("elmah/errorFilter")
as ErrorFilterConfiguration;
if (config == null)
return false;
var testContext = new ErrorFilterModule.AssertionHelperContext(
context.Exception, HttpContext.Current);
return config.Assertion.Test(testContext);
}
}
Et j'ai une classe ExceptionHelper avec ce code:
public static class ExceptionHelper
{
public static bool RaiseErrorSignal(Exception e)
{
var context = HttpContext.Current;
if (context == null)
return false;
var signal = ErrorSignal.FromContext(context);
if (signal == null)
return false;
signal.Raise(e, context);
return true;
}
public static void LogException(Exception e)
{
var context = HttpContext.Current;
ErrorLog.GetDefault(context).Log(new Error(e, context));
}
J'ai annotée ma classe de contrôleur de base avec MyNamspace.HandleError
et maintenant toutes les exceptions sont traitées et enregistrées, je reçois même un mail quand quelque chose ne va pas ....
Qu'avez-vous essayé jusqu'à présent? Avez-vous rencontré des problèmes particuliers que vous pourriez poser? –