Stellen Sie sich das klassische Beispiel vor: Ein Benutzer klickt auf eine Schaltfläche in einer Ansicht, die Code aus der Business-Schicht aufruft, der wiederum Code aus der Datenzugriffsschicht aufruft, der Daten zurückgibt zum Geschäft, die zu einer Ansicht zurückkehren.
Ich möchte meine Protokollnachricht über diese Ebenen verfassen. Die aufrufende Methode (in einer Ansicht), die den gesamten Prozess gestartet hat, erhält die vollständige Nachricht. Hier sind einige Codebeispiele, um mir zu erklären, was ich erreichen möchte.
Code: Select all
public void ViewMethod()
{
try
{
BusinessMethod();
}
catch (Exception ex)
{
Logger.Enqueue("exception occurred");
Logger.Print();
}
}
public void BusinessMethod()
{
try
{
DataAccessMethod();
}
catch (Exception ex)
{
Logger.Enqueue("Exception occurred in the business method")
}
}
public void DataAccessMethod()
{
try
{
// some code that executes an SQL command
// Log the SQL Command 1
// Log the SQL Command 2 and do on...
}
catch (Exception ex)
{
Logger.Enqueue("Error occurred, SQL executed is ...", sqlExecuted);
}
}
Meine Frage ist Gibt es ein Entwurfsmuster für die Entwicklung oder ist die Übergabe einer Logger-Referenz über die „Ebenen“ akzeptabel?