Je vous recommande d'emballage de l'appel à Elmah dans un simple wrapper classe de votre choix.
using Elmah;
public static class ErrorLog
{
/// <summary>
/// Log error to Elmah
/// </summary>
public static void LogError(Exception ex, string contextualMessage=null)
{
try
{
// log error to Elmah
if (contextualMessage != null)
{
// log exception with contextual information that's visible when
// clicking on the error in the Elmah log
var annotatedException = new Exception(contextualMessage, ex);
ErrorSignal.FromCurrentContext().Raise(annotatedException, HttpContext.Current);
}
else
{
ErrorSignal.FromCurrentContext().Raise(ex, HttpContext.Current);
}
// send errors to ErrorWS (my own legacy service)
// using (ErrorWSSoapClient client = new ErrorWSSoapClient())
// {
// client.LogErrors(...);
// }
}
catch (Exception)
{
// uh oh! just keep going
}
}
}
Puis il suffit d'appeler quand vous en avez besoin pour vous connecter une erreur.
try {
...
}
catch (Exception ex)
{
// log this and continue
ErrorLog.LogError(ex, "Error sending email for order " + orderID);
}
Cela présente les avantages suivants:
- Vous n'avez pas besoin de vous rappeler de cela un peu archaïques de la syntaxe de l'appel Elmah
- Si vous avez beaucoup de Dll que vous n'avez pas besoin de faire référence à Elmah de Base de chacun - et il suffit de mettre ceci dans votre propre Système de " DLL.
- Si jamais vous avez besoin de faire une manipulation spéciale ou tout simplement pour mettre un point d'arrêt pour déboguer les erreurs que vous avez tous les un lieu.
- Si jamais vous éloigner de Elmah, vous pouvez simplement changer un seul endroit.
- Si vous avez hérité d'enregistrement des erreurs que vous souhaitez conserver (je viens d'arriver à avoir une simple erreur de mécanisme de journalisation qui est liée en quelques UIs que je n'ai pas immédiatement eu le temps de retirer).
Note: j'ai ajouté un " contextualMessage biens à des informations contextuelles. Vous pouvez omettre cette option si vous préférez, mais je trouve cela très utile. Elmah automatiquement déballe des exceptions si le sous-jacent d'exception seront toujours signalés dans le journal, mais le contextualMessage sera visible lorsque vous cliquez sur elle.