Ich schreibe eine Automation (Testprojekt) mit vs2010. Ich habe bereits eine Logger-Klasse mit den relevanten Info(string), Debug(string) und Error(string, Exception) Methoden, die das ordnungsgemäße Schreiben von Nachrichten in eine Datei implementieren.
Jetzt verstehe ich, dass mein Info-Protokoll speziell im Code meiner Tests geschrieben werden muss, aber gibt es einen Weg, um die Fehlermeldungen automatisch zu schreiben, wie die Implementierung der geworfenen Ausnahmen? Die Ausnahmen sind Teil des Designs (ich muss sie werfen, um den Bestehens-/Durchfallzustand jedes Tests zu bestimmen).
Ich kann die grundlegende Implementierung durchführen, indem ich meinen gesamten Code in ein try-catch einhülle, im catch-Block das Logger.error() schreibe und dann die Ausnahme erneut werfe, wie folgt:
public class Test
{
["TestMethod"]
public void RunTest()
{
try
{
//meinen Code hier ausführen
}
catch (Exception ex)
{
Logger.Error("Fehlermeldung", ex);
throw;
}
}
}
Aber ich bin mir nicht sicher, ob es ein angemessenes Design ist, try-catch zu verwenden, um Fehler zu protokollieren.
Ich habe an zwei Dinge gedacht:
- Einen Listener-Thread erstellen, der meine Ausnahmen abfängt, protokolliert und erneut wirft...
- Die Exception-Klasse manipulieren, um meine Log.Error() zu verwenden (oder MyException von ihr abzuleiten und meinen Code so zu manipulieren, dass nur MyException geworfen wird).
- Ich habe bereits versucht, das Enterprise-Library zu installieren und den Logging-Block zu verwenden, bin mir aber nicht sicher, ob dies meinen Anforderungen entspricht (und es ist mir nicht gelungen, die Instanz des LogWriter zu erhalten oder sowieso Logger.Write zu verwenden).
Bin ich auf dem richtigen Weg? Gibt es andere Möglichkeiten, um solche "Fehler automatisch zu schreiben" zu implementieren?
Danke, Elad