Com a ajuda do AOP, posso remover o código de log da minha lógica de negócios. Mas acho que só pode ser usado para registrar coisas simples (por exemplo, entrada / saída do método de registro e valores de parâmetros).
No entanto, e se eu precisar registrar algo na minha lógica de negócios? por exemplo
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
}
O método de amostra acima pode não ser suficientemente claro, o que quero mostrar aqui é que o método deve ser tratado como a menor unidade do ponto de vista do domínio. Não deve ser dividido em pedaços menores.
É possível mover acima do código de log 3 acima do método? Qual é a melhor prática para essa situação?