Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过NServiceBus中的Castle.Windsor注入Log4Net日志_C#_Castle Windsor_Log4net_Nservicebus - Fatal编程技术网

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();
调试(“总线配置”);
}
}