Registrando o NLog ILogger com o Injetor Simples

Existe alguma maneira de obter o contexto para recuperar ologgerName E useLogManager.GetLogger(loggerName) ao invés deLogManager.GetCurrentClassLogger()?

Percebicontainer.RegisterConditional() tem acesso ao contexto.

Além disso, quero evitar soluções comoSimpleLogging.NLog para agora.

Por fim, estou disposto a aceitar que essa não é a abordagem correta. BTW, AOP é uma opção que eu já explorei (É uma boa prática ter o logger como um singleton?)

Nota: Estou ciente de queGetCurrentClassLogger() obtém as mesmas informações que eu recuperaria com a reflexão do .NET.

using NLog;
using SimpleInjector;

namespace DependencyInjection
{
    class Program
    {
        private static Container _container;
        static void Main(string[] args)
        {
            Bootstrap();
            _container.GetInstance<Greeter>().Greet();
        }

        private static void Bootstrap()
        {
            _container = new Container();

            _container.Register<ILogger>(() => LogManager.GetCurrentClassLogger(), Lifestyle.Transient);
            _container.Register<Greeter>();

            _container.Verify();
        }

        public class Greeter
        {
            private ILogger _logger;

            public Greeter(ILogger logger)
            {
                _logger = logger;
            }

            public void Greet()
            {
                _logger.Log(LogLevel.Info, "Hello world!");
            }
        }
    }
}

questionAnswers(1)

yourAnswerToTheQuestion