Eu recomendo o NLog, que você já está usando. Trabalho com ele há
bastante tempo e não tenho nada a reclamar. Pessoalmente eu não me
preocupo em injetar a classe de logging porque acredito que ela não vá
mudar durante a vida da aplicação. Então eu simplesmente faço uso (no
caso do NLog, através do Logger.GetCurrentClassLogger ou
Logger.GetLogger).
Sobre a classe Trace do framework do .NET, fique atento ao fato de seu
funcionamento ser condicionado ao uso da diretiva de compilação TRACE.
Geralmente isso não é um problema, porque tanto as configurações de
Debug quanto de Release do Visual Studio adicionam essa diretiva na
"linha de comando" do compilador. Isso já não é verdade para a classe
Debug, que depende da diretiva DEBUG, e esta só é definida pelo Visual
Studio na configuração de Debug.
[]s
Michael Benford