2010-09-28 17 views
11

Je suis un peu confus à la façon d'ajouter un message à une erreur enregistrée par programme avec ELMAH.Elmah ajouter un message à l'erreur connecté à l'appel à Raise (e)

par exemple:

public ActionResult DoSomething(int id) 
{ 
    try { ... } 

    catch (Exception e) 
    { 
     // I want to include the 'id' param value here, and maybe some 
     // other stuff, but how? 
     ErrorSignal.FromCurrentContext().Raise(e); 
    } 
} 

Il semble que tout Elmah peut faire est de se connecter à l'exception brute, comment puis-je me connecter aussi mon propre information de débogage?

+1

curieux de savoir pourquoi Elmah n'a pas de surcharge pour augmenter pour des messages supplémentaires. l'information contextuelle est essentielle en essayant de corriger certaines erreurs –

Répondre

17

Vous pouvez jeter un nouveau réglage exception de l'original comme l'exception interne et ELMAH consignera les messages pour les deux:

catch(Exception e) 
{ 
    Exception ex = new Exception("ID = 1", e); 
    ErrorSignal.FromCurrentContext().Raise(ex); 
} 

montrera

System.Exception: ID = 1 ---> System.NullReferenceException: Object reference not set to an instance of an object. 
+0

bonne idée, merci – fearofawhackplanet

+0

fonctionne super! Merci! –

+0

vous devriez utiliser Exception.Data, mais par défaut elmah n'a pas cette fonctionnalité. J'ai ajouté à une version personnalisée que j'utilise. Je devrais vraiment poster le code quelque part. Je sais que c'est vieux mais je pense que ce n'est pas 100% correct. Oui, vous pouvez l'utiliser pour les petits détails, mais si vous voulez une liste de données, c'est ce à quoi a été faite l'Exception.Data. Par exemple, quand une SQLException est lancée, vous obtenez beaucoup de détails. J'ai aussi ajouté ceci. Ce n'est pas vraiment difficile à faire soi-même. Aussi, lorsque vous travaillez avec linq2sql, vous pouvez également obtenir beaucoup de détails. – pqsk

3

je trouve que je peux faire quelque chose comme:

Elmah.ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("class  FbCallback.Page_Load() Request.Url= " + Request.Url)); 

Pour enregistrer mes propres messages. Puis, lorsque je navigue vers

http://localhost:5050/elmah.axd 

Je vois mes messages comme type NotImplementedException. Pas très joli mais fonctionne.