C# 如何通过NServiceBus中的Castle.Windsor注入Log4Net日志
我希望C# 如何通过NServiceBus中的Castle.Windsor注入Log4Net日志,c#,castle-windsor,log4net,nservicebus,C#,Castle Windsor,Log4net,Nservicebus,我希望NServiceBus使用Castle.Windsor容器提供的记录器,而不是自己直接提供。有没有办法做到这一点?以下内容不作为启动时引发的异常工作 public class EndPointConfig : IConfigureThisEndpoint, IWantCustomInitialization, IWantCustomLogging { private ILogger _logger = NullLogger.Instance; public ILogger
NServiceBus
使用Castle.Windsor
容器提供的记录器,而不是自己直接提供。有没有办法做到这一点?以下内容不作为启动时引发的异常工作
public class EndPointConfig : IConfigureThisEndpoint, IWantCustomInitialization, IWantCustomLogging
{
private ILogger _logger = NullLogger.Instance;
public ILogger Logger
{
get { return _logger; }
set { _logger = value; }
}
public void Init()
{
SetLoggingLibrary.Log4Net(null, Logger);
Configure.With()
.CastleWindsorBuilder(Host.Init.CreateSubsystems())
.RunTimeoutManager()
.UseNHibernateTimeoutPersister();
}
}
Host.Init.createSubsystem()
返回一个带有注册记录器的Castle.Windsor
容器。如果您提供一个容器,且该容器已通过ILogger启动并注册到CastleWindsorBuilder,则无需执行其他操作:NServiceBus将根据log4net配置使用记录器设置(根据容器中的记录器注册,单独文件或在app.config中)
SetLoggingLibrary.Log4Net(null,Logger);不需要
public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
public void Init()
{
var container = new WindsorContainer();
var installerFactory = new MyInstallerFactory();
container.Install(FromAssembly.This(installerFactory));
var logger = container.Resolve<ILogger>();
logger.Debug("Container bootstrapped");
Configure.With()
.DisableTimeoutManager()
.CastleWindsorBuilder(container)
.JsonSerializer();
logger.Debug("Bus configured");
}
}
public class MessageEndpoint:IConfigureThisEndpoint,AsA_服务器,IWantCustomInitialization
{
公共void Init()
{
var container=新的WindsorContainer();
var installerFactory=new MyInstallerFactory();
container.Install(fromsassembly.This(installerFactory));
var logger=container.Resolve();
调试(“容器引导”);
用()配置
.DisableTimeoutManager()
.CastleWindsorBuilder(集装箱)
.JsonSerializer();
调试(“总线配置”);
}
}
如果您提供的是一个容器alreday引导,带有注册到CastleWindsorBuilder的ILogger,则无需其他操作:NServiceBus将根据log4net配置使用您的记录器设置(根据容器中的记录器注册,在app.config中使用单独的文件或app.config)
SetLoggingLibrary.Log4Net(null,Logger);不需要
public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
public void Init()
{
var container = new WindsorContainer();
var installerFactory = new MyInstallerFactory();
container.Install(FromAssembly.This(installerFactory));
var logger = container.Resolve<ILogger>();
logger.Debug("Container bootstrapped");
Configure.With()
.DisableTimeoutManager()
.CastleWindsorBuilder(container)
.JsonSerializer();
logger.Debug("Bus configured");
}
}
public class MessageEndpoint:IConfigureThisEndpoint,AsA_服务器,IWantCustomInitialization
{
公共void Init()
{
var container=新的WindsorContainer();
var installerFactory=new MyInstallerFactory();
container.Install(fromsassembly.This(installerFactory));
var logger=container.Resolve();
调试(“容器引导”);
用()配置
.DisableTimeoutManager()
.CastleWindsorBuilder(集装箱)
.JsonSerializer();
调试(“总线配置”);
}
}