caSTLe-windsor - 我必须用 CaSTLe Windsor 解决 ILogger 问题吗?

标签 castle-windsor log4net ioc-container

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

我以为安装程序会将 CaSTLe.Core.Logging.ILogger 注入(inject)到下面的 MyLogger 类中,但我总是得到空记录器,除非我解析 MyLogger .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;
       }
    } 
}

最佳答案

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

这是使用 xml 设置日志记录工具的示例并使用 code

基本上可以归结为:

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

关于caSTLe-windsor - 我必须用 CaSTLe Windsor 解决 ILogger 问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13258564/

相关文章:

c# - 关于国际奥委会的问题

mvvm - 使用 MVVM 和 Unity 使用其 ViewModels 实例化/调用其他 View (WPF 表单)

c# - 使用 Ninject 在具有多个具有相同基本类型的存储库的类中分配正确的存储库

c# - CaSTLe Windsor 中对象图的多个不同实例

c# - 使用 log4net + AutoFac 拦截器记录所有处理的异常

java - 如何使用 log4j SMTP 附加程序发送电子邮件

.net - 在 log4net 中以编程方式添加和删除日志附加程序

c# - 类型 : "Namespace.type" not found 的构造函数

dependency-injection - CaSTLe.Windsor 不会使用 FromAssembly.InThisApplication 运行安装程序,除非在代码中引用程序集

c# - 从 Windsor 容器中删除或覆盖组件