Использование IoC в настраиваемом приложении Log4Net

К сожалению, я довольно долго искал, когда искал что-либо, связанное с Unity или IoC, с помощью Log4Net, единственные результаты, которые я получал, - это как сделатьILog автоматически заполняется через IoC. Этоне что я пытаюсь сделать

У меня есть пользовательский Appender, который передает данные через WCF на сервер. Я хотел бы передать фабричный метод, предпочтительно сгенерированный Unity, который создает для меня клиентский класс WCF, чтобы я мог поменять реальный клиентский класс на заглушки во время модульного тестирования. Проблема в том, что я нигде не могу найти объяснения о том, как передать аргумент настраиваемому приложению log4net.

Вот как я обычно реализую это, используя Unity.

public class WcfAppender : BufferingAppenderSkeleton
{
    public WcfAppender(Func<ClientLoggerClient> loggerClientFactory) //How do I get this Func passed in?
    {
        LoggerClientFactory = loggerClientFactory;
    }


    private readonly Func<ClientLoggerClient> LoggerClientFactory; 
    private static readonly ILog Logger = LogManager.GetLogger(typeof(WcfAppender));
    private static readonly string LoggerName = typeof(WcfAppender).FullName;

    public override void ActivateOptions()
    {
        base.ActivateOptions();
        this.Fix = FixFlags.All;
    }

    protected override bool FilterEvent(LoggingEvent loggingEvent)
    {
        if (loggingEvent.LoggerName.Equals(LoggerName))
            return false;
        else
            return base.FilterEvent(loggingEvent);
    }


    protected override void SendBuffer(LoggingEvent[] events)
    {
        try
        {
            var client = LoggerClientFactory();
            try
            {
                client.LogRecord(events.Select(CreateWrapper).ToArray());
            }
            finally
            {
                client.CloseConnection();
            }
        }
        catch (Exception ex)
        {
            Logger.Error("Error sending error log to server", ex);
        }
    }

    private ErrorMessageWrapper CreateWrapper(LoggingEvent arg)
    {
        var wrapper = new ErrorMessageWrapper();

        //(Snip)

        return wrapper;
    }
}

Однако я не звонюcontainer.Resolve<WcfAppender>() именно в библиотеке log4netnew WcfAppender() вызывается. Как мне указать библиотеку log4net использоватьnew WcfAppender(factoryGeneratedFromUnity) вместо?

Ответы на вопрос(3)

Ваш ответ на вопрос