Andere haben einige gute Links auf den Logging Application Block (LAB) veröffentlicht, damit ich das hier nicht vervielfältige.
In Bezug auf die Ausnahme Formatierung Sie haben drei Möglichkeiten, die ich denken kann:
- die Standard
Exception.ToString()
Implementierung verwenden (es ist nicht schlecht)
- eine benutzerdefinierte Formatter schreiben, die in den LAB integriert.
- Schreiben Sie eine Hilfsfunktion, die die Formatierung durchführt, und übergibt die Zeichenfolge an die Write-Methode.
Wenn Option 1 Ihre Anforderungen nicht erfüllt, dann würde ich die Option 3 empfehlen (da Option 2 übertrieben ist).
Ein einfaches Beispiel wäre so etwas wie:
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 + " ");
}
}
Es ist auch hilfreich, den Namen des Ausnahmetyps anzugeben. Aber ansonsten ganz nett. –
@Andrew: Ja, oder Sie könnten Code hinzufügen, um das IDictionary aus der Data-Eigenschaft zu extrahieren. –
[Hier] (http://www.aspsnippets.com/Articles/Create-simple-Error-Log-Text-File-in-ASPNet-using-C-and-VBNet.aspx) ist eine andere ** Lösung ** . Hoffnung hilft. – stom