Mit Hilfe von AOP kann ich den Protokollierungscode aus meiner Geschäftslogik entfernen. Aber ich denke, es kann nur verwendet werden, um einfache Dinge zu protokollieren (dh Protokollierungsmethodenein- / -ausgang und Parameterwerte).
Was ist jedoch, wenn ich etwas in meiner Geschäftslogik protokollieren muss? z.B
public void SomeDomainMethod(string id)
{
//Get user by Id
User user = Users.Get(id);
if (user == null)
{
Log.Warn("user is not existed"); //<----------------- Log A
throw new InvalidOperationException("user is not existed");
}
//Step 1
while(true)
{
//do something
}
Log.Info("Step 1 is completed"); //<----------------- Log B
//Step 2
while(true)
{
//do something
}
Log.Info("Step 2 is completed"); //<----------------- Log C
}
Die obige Beispielmethode ist möglicherweise nicht klar genug. Ich möchte hier zeigen, dass die Methode aus Sicht der Domäne als kleinste Einheit behandelt werden sollte. Es sollte nicht in kleinere Stücke geteilt werden.
Ist es möglich, mehr als 3 Protokollierungscodes aus der Methode zu entfernen? Was ist die beste Vorgehensweise für eine solche Situation?