如何注入Log4Net日志通过城堡.温莎在NServiceBus
本文关键字:城堡 NServiceBus 日志 何注入 注入 Log4Net | 更新日期: 2023-09-27 18:08:31
我希望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的logger,那么就没有别的事可做了:NServiceBus将根据log4net配置使用你的logger设置(单独的文件或在app.config中根据logger在容器中的注册)
SetLoggingLibrary。Log4Net (null,记录器);不需要。
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");
}
}