Je veux pouvoir me connecter à chaque bloc de saisie. Quelque chose comme ça. Ensuite, les paramètres de la configuration accèderont à la propriété Message et StackTrace, etc., à l'aide du programme d'écoute du client (0). Je souhaite utiliser le bloc d'application de journalisation de la bibliothèque d'entreprise. Je suis sûr que quelqu'un a déjà fait ça.Comment enregistrer une exception dans un fichier?
Répondre
D'autres ont posté de bons liens pour faire fonctionner le LOG (Logging Application Block), donc je ne vais pas le dupliquer ici.
En termes de formatage de votre exception vous avez 3 choix que je peux penser:
- Utilisez la valeur par défaut
Exception.ToString()
mise en œuvre (c'est pas mal) - Ecris une Formatter personnalisée qui intègre dans le LAB.
- Ecrivez une fonction d'assistance qui effectue la mise en forme et transmet la chaîne à la méthode Write.
Si l'option 1 ne répond pas à vos besoins, je vous recommande d'utiliser l'option 3 (car l'option 2 est trop lourde).
Un exemple simple serait quelque chose comme:
catch (Exception exception)
{
Logger.Write(LogHelper.CreateExceptionString(exception));
}
...
public static string CreateExceptionString(Exception e)
{
StringBuilder sb = new StringBuilder();
CreateExceptionString(sb, e, String.Empty);
return sb.ToString();
}
private static void CreateExceptionString(StringBuilder sb, Exception e, string indent)
{
if (indent == null)
{
indent = String.Empty;
}
else if (indent.Length > 0)
{
sb.AppendFormat("{0}Inner ", indent);
}
sb.AppendFormat("Exception Found:\n{0}Type: {1}", indent, e.GetType().FullName);
sb.AppendFormat("\n{0}Message: {1}", indent, e.Message);
sb.AppendFormat("\n{0}Source: {1}", indent, e.Source);
sb.AppendFormat("\n{0}Stacktrace: {1}", indent, e.StackTrace);
if (e.InnerException != null)
{
sb.Append("\n");
CreateExceptionString(sb, e.InnerException, indent + " ");
}
}
Vous devez ajouter un programme d'écoute approprié pour les fichiers texte - voir this post, son pour ASP.NET mais les fichiers de configuration fonctionnent de la même manière dans les applications.
Puis-je faire quelque chose pour passer directement objet d'exception afin qu'il donne trace de la pile détaillée etc. qui sera utile dans le débogage. – IsmailS
Microsoft a fourni vaste conseils sur ce ici: Developing Applications Using the Logging Application Block
Il vaut bien vous familiariser avec ce qu'ils ont à dire, comme il est assez puissant.
Si vous voulez quelque chose d'un peu plus bas sur la terre, quelques exemples de travail sont fournis dans cet article de blog: How To Configure and Use the Logging Application Block
Si vous rencontrez toujours des problèmes après la lecture de ceux-ci, éditer votre message avec des détails plus précis sur ce semble être le problème.
Puis-je faire quelque chose pour passer directement l'objet d'exception afin qu'il donne une trace détaillée de la pile, ce qui sera utile pour le débogage? – IsmailS
Vous pouvez créer une méthode assez simple et/ou un modèle string.format, puis l'utiliser lors de l'appel de Logger.Write. –
Le lien de configuration va directement à la publicité. – sweetfa
@iSid Est-ce que vous demandez
public static void printException(Exception ex){
Console.WriteLine("HelpLink = {0}", ex.HelpLink);
Console.WriteLine("Message = {0}", ex.Message);
Console.WriteLine("Source = {0}", ex.Source);
Console.WriteLine("StackTrace = {0}", ex.StackTrace);
Console.WriteLine("TargetSite = {0}", ex.TargetSite);
}
- 1. Comment enregistrer une exception C++
- 2. Comment enregistrer un objet dans un fichier?
- 3. Comment enregistrer une image dans un fichier dans WPF
- 4. Comment enregistrer une valeur dans un fichier plist dans iphone?
- 5. Comment enregistrer une exception générale dans le journal des événements?
- 6. Comment enregistrer une exception avec une pile d'appels complète?
- 7. comment enregistrer un fichier flex?
- 8. Comment enregistrer une phrase dans un fichier texte en C++?
- 9. Comment enregistrer un objet dans un fichier dans Delphi
- 10. Comment utiliser ImageIO pour enregistrer plusieurs BufferedImages dans un fichier
- 11. Comment enregistrer un contenu TextField à un fichier dans VB
- 12. Comment enregistrer un fichier en utilisant JFileChooser?
- 13. Comment enregistrer un fichier lisible par l'homme
- 14. android comment enregistrer un objet dans un fichier?
- 15. Comment enregistrer un objet QPixmap dans un fichier?
- 16. Comment enregistrer le tas (vidage vers un fichier) dans Eclipse?
- 17. Comment enregistrer des données dans un fichier .txt dans MATLAB
- 18. Comment enregistrer une note dans une chanson?
- 19. JTable pouvant enregistrer dans un fichier
- 20. Comment enregistrer des e-mails dans un fichier avec Perl?
- 21. Elisp: Comment enregistrer les données dans un fichier?
- 22. Comment enregistrer la sortie du journal NAnt dans un fichier?
- 23. Comment enregistrer les sorties STDOUT dans un fichier texte?
- 24. Comment enregistrer un fichier dans Flex avec Flash 9
- 25. Comment enregistrer la session dbx dans un fichier texte?
- 26. Comment enregistrer des images dans un fichier zip
- 27. Comment enregistrer toutes les requêtes Doctrine dans un fichier?
- 28. Comment enregistrer chaque correspondance dans un fichier différent avec Vim
- 29. Comment enregistrer le fichier dans un répertoire local
- 30. Comment enregistrer le contenu de ListView dans un fichier texte?
Il est également utile d'inclure le nom du type d'exception. Mais sinon très bien. –
@Andrew: oui ou vous pourriez ajouter du code pour extraire l'IDictionary de la propriété Data. –
[ici] (http://www.aspsnippets.com/Articles/Create-simple-Error-Log-Text-File-in-ASPNet-using-C-and-VBNet.aspx) est une autre ** solution ** . l'espoir aide. – stom