Andere haben einige gute Links zum Funktionieren des Logging Application Block (LAB) gepostet, so dass ich das hier nicht wiederholen werde.
Was die Formatierung Ihrer Ausnahme betrifft, haben Sie 3 Möglichkeiten, die mir einfallen:
- Verwenden Sie den Standard
Exception.ToString()
Umsetzung (nicht schlecht)
- Schreiben Sie einen benutzerdefinierten Formatierer, der sich in das LAB integriert.
- Schreiben Sie eine Hilfsfunktion, die die Formatierung vornimmt und die Zeichenkette an die Write-Methode übergibt.
Wenn Option 1 Ihren Bedürfnissen nicht entspricht, würde ich Ihnen Option 3 empfehlen (da Option 2 zu viel 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);
return sb.ToString();
}
private static void CreateExceptionString(
StringBuilder sb,
Exception e,
string indent = "")
{
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 + " ");
}
}