Регистрация NLog ILogger с помощью простого инжектора

Есть ли способ получить контекст, чтобы я мог получитьloggerName и использоватьLogManager.GetLogger(loggerName) вместоLogManager.GetCurrentClassLogger()?

Я заметилcontainer.RegisterConditional() имеет доступ к контексту.

Кроме того, я хочу избежать таких решений, какSimpleLogging.NLog теперь.

Наконец, я готов признать, что это не правильный подход. Кстати, АОП это вариант, который я уже исследовал (Является ли хорошей практикой иметь регистратор как синглтон?).

Примечание: я знаю, чтоGetCurrentClassLogger() получает ту же информацию, которую я бы извлек с помощью отражения .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!");
            }
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос