2012-12-31 5 views
1

Je travaille actuellement avec Elmah et je l'aime vraiment. J'ai quelques questions à ce sujet cependant:Quelques questions sur Elmah

Y at-il un moyen quand je consigner une exception que je peux ajouter des données personnalisées à la journalisation des exceptions qui seront enregistrées avec l'exception? Quand une erreur survient sur mon site, je voudrais pouvoir rediriger l'utilisateur vers une page d'erreur et inclure un identifiant unique pour l'exception qui est enregistrée avec l'exception mais également affichée à l'écran. peut le retrouver lorsqu'un utilisateur le signale. Est-ce possible?

Existe-t-il des instructions pour me dire que je peux configurer la journalisation des exceptions sur le disque?

Répondre

0

Vous pouvez utiliser Request/Response patern. Si l'utilisateur obtient une réponse d'exception, entrez l'erreur avec Elmah et renvoyez le message d'erreur avec l'ID d'erreur unique à l'utilisateur final. Vous pouvez voir l'exemple de code ci-dessous:

public class Response 
{ 
    public string Message { get; set; } 
    public bool Success { get; set; } 
} 

public class ErrorLog 
{ 
    public static string GenerateErrorRefMessageAndLog(Exception exception) 
    { 
     string uniqueId = Guid.NewGuid().ToString(); 
     Exception newEx = new Exception(uniqueId, exception); 
     Elmah.ErrorSignal.FromCurrentContext().Raise(newEx); 
     return String.Format("If you wish to contact us please quote reference '{0}'", uniqueId); 
    } 
} 

public class YourClass 
{ 
    var response = new Response(); 

    try 
    { 
     //Bussines logic here 
     response.Success = true; 
    } 
    catch (Exception ex) 
    { 
     // Shield Exceptions 
     response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex); 
     response.Success = false; 
    }    
    return response; 
} 

Voici comment configurer Elmah. http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs

2

Vous pouvez ajouter à la collection de données de n'importe quelle exception. Vous pouvez le faire dans un bloc try catch, un gestionnaire Application_Error dans Global.asax ou un HandleErrorAttribute enregistré.

exception.Data.Add("key", "additional info"); 

Vous pouvez vous connecter au fichier en utilisant la configuration d'Elmah. Vérifiez que vous avez défini des autorisations utilisateur sur cet emplacement.

<elmah> 
<security allowRemoteAccess="yes" /> 
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ErrorLogs" /> 
</elmah> 
+0

La section web.config a fonctionné. – Rahatur