NLog ILogger mit Simple Injector registrieren

Gibt es eine Möglichkeit, den Kontext abzurufen, damit ich das @ abrufen kanloggerName und benutzeLogManager.GetLogger(loggerName) Anstatt vonLogManager.GetCurrentClassLogger()?

Ich bemerktecontainer.RegisterConditional() hat Zugriff auf den Kontext.

Auch möchte ich Lösungen wie @ vermeid SimpleLogging.NLog zur Zeit

Finally, ich bin bereit zu akzeptieren, dass dies nicht der richtige Ansatz ist. BTW, AOP ist eine Option, die ich bereits erkundet habe Ist es eine gute Praxis, Logger als Singleton zu haben?).

Hinweis: Mir ist bewusst, dassGetCurrentClassLogger() erhält die gleichen Informationen, die ich mit .NET Reflection erhalten würde.

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!");
            }
        }
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage