繁体   English   中英

如何通过NServiceBus中的Castle.Windsor注入Log4Net日志记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM