Dengan bantuan AOP, saya dapat menghapus kode logging dari logika bisnis saya. Tapi saya pikir itu hanya dapat digunakan untuk mencatat hal-hal sederhana (mis. Metode masuk / keluar dan nilai parameter).
Namun, bagaimana jika saya perlu mencatat sesuatu dalam logika bisnis saya? misalnya
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
}
Metode sampel di atas mungkin tidak cukup jelas, yang ingin saya tunjukkan di sini adalah bahwa metode tersebut harus diperlakukan sebagai unit terkecil dari sudut pandang domain. Seharusnya tidak dibagi menjadi potongan-potongan kecil.
Apakah mungkin memindahkan 3 kode log di atas dari metode ini? Apa praktik terbaik untuk situasi seperti itu?