小编Gon*_*nto的帖子

使用Simple Injector注册NLog ILogger

有什么方法可以获得上下文所以我可以检索loggerName并使用LogManager.GetLogger(loggerName)而不是LogManager.GetCurrentClassLogger()

我注意到container.RegisterConditional()可以访问上下文.

另外,我现在想避免像SimpleLogging.NLog这样的解决方案.

最后,我愿意接受这不是正确的方法.顺便说一下,AOP是我已经探索过的一个选项(将记录器作为单身人员是一种很好的做法吗?).

注意:我知道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!");
            } …
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection nlog ioc-container simple-injector

12
推荐指数
1
解决办法
5882
查看次数