A infraestrutura de registro deve ser injetada ao usar IoC / DI se a fachada de registro for usada?
Estou usando o Autofac como meu IoC e de tudo o que li sobre o tópico DI ensina a usar "injeção de construtor" para expor explicitamente dependências de classe ... No entanto, também estou usando a fachada de registro (Common.Logging) com Log4Net e criei Módulo Autofac para injetar. Agora, em todas as classes em que eu quero fazer algum registro, eu tenho um parâmetro extra de construtor (veja a amostra 1) ....
Eu estou querendo saber se log de DI é necessário ao usar a fachada de registro? Eu entendo que expor explicitamente as dependências através da assinatura do construtor é uma boa arquitetura.mas no caso de fachada de registro, acredito que o seguinte seja verdadeiro:
Eu ainda posso "trocar" a estrutura de log a qualquer momentoA classe IMHO não é realmente dependente do Logger. Se nenhum registro estiver configurado, o NullLogger será usado. É quase "é assim que você precisa" versus "não vai funcionar a menos que você forneça" tipo de negócio ... (veja a amostra 2)Então, o que os outros pensam? A injeção de fachada é um exagero? Há algunsperguntas semelhantes sobre este tema, mas em termos mais gerais (a infraestrutura) - Eu estou principalmente interessado em registrar ....
// IoC "way"
public class MyController : BaseController
{
private readonly ILog _logger;
public MyController(ILog logger)
{
_logger = logger;
}
public IList<Customers> Get()
{
_logger.Debug("I am injected via constructor using some IoC!");
}
}
// just use the logger "way"
public class MyController : BaseController
{
private static readonly ILog Logger = LogManager.GetCurrentClassLogger();
public IList<Customers> Get()
{
Logger.Debug("Done! I can use it!");
}
}