AOP의 도움으로 비즈니스 로직에서 로깅 코드를 제거 할 수 있습니다. 그러나 나는 간단한 것들 (즉, 로깅 방법 입력 / 종료 및 매개 변수 값)을 기록하는 데만 사용할 수 있다고 생각합니다.
그러나 비즈니스 로직에 무언가를 기록해야하는 경우 어떻게해야합니까? 예 :
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
}
위의 샘플 방법은 명확하지 않을 수 있습니다. 여기서 보여 드리고자하는 방법은 도메인 관점에서 가장 작은 단위로 처리해야한다는 것입니다. 더 작은 조각으로 나눠서는 안됩니다.
메소드에서 3 가지 로깅 코드 이상으로 이동할 수 있습니까? 그러한 상황에 대한 모범 사례는 무엇입니까?