我必须和Castle Windsor一起解决ILogger吗?

时间:2012-11-06 20:06:29

标签: castle-windsor log4net ioc-container

所有这些代码都是我自己的libary,供我的客户端消费者应用程序使用 我有与here中找到的文档完全相同的安装程序。除了使用_bootStrapContainer = new WindsorContainer().Install(FromAssembly.Named("MyAssembly"));

之外,我还有一个与here几乎相同的引导程序。

我认为安装程序会将Castle.Core.Logging.ILogger注入下面的MyLogger类,但除非我像这样解析MyLogger.Logger,否则我总是会得到null logger:

MyLogger lgr = new MyLogger();            
lgr.Logger = container.Resolve<ILogger>();

所以我的问题是我总是必须解决,或者我没有做正确的事情 注册

using Castle.Core.Logging;

public class MyLogger
{
   private ILogger _logger = NullLogger.Instance;

   public ILogger Logger
   {
       get
       {
           return _logger;
       }
       set
       {
           _logger = value;
       }
    } 
}

2 个答案:

答案 0 :(得分:1)

您需要注册Windsor日志记录工具以使Windsor能够为您解析Logger属性。

以下是使用xml并使用code

设置日志记录工具的示例

基本上归结为:

container.AddFacility<LoggingFacility>(f => f.UseLog4Net());

答案 1 :(得分:0)

也许它不起作用,因为它已经有了一个值,在没有初始化字段的情况下再次尝试,将其移动到属性的获取