![](/img/trans.png)
[英]Windsor castle: how do you set log4net filePath dynamically through LoggingFacility
[英]How to Inject Log4Net Logging through Castle.Windsor in NServiceBus
我希望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.CreateSubsystems()
返回带有已注册记录器的Castle.Windsor
容器。
如果您提供的容器是每天引导的,带有注册到CastleWindsorBuilder的ILogger,则无需执行其他操作: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");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.