Мне нужно добавить два разных метода журнала в мое приложение.
Теперь, чтобы добавить обычный журнал 4net в DI, мы можем сделать это (microsoft unity):
container.AddNewExtension<Log4NetExtension>();
Это с помощью Log4NetExtension.cs. Теперь, когда мне нужно добавить новое, добавьте
container.AddNewExtension<NewLog4NetExtension>();
Итак, я попытался переопределить «Log4NetExtension»
public interface ILogExtender : ILog
{
}
[SecuritySafeCritical]
public class NewLog4NetExtension: UnityContainerExtension
{
protected override void Initialize()
{
Context.Policies.Set(typeof(ILogExtender), typeof(ResolveDelegateFactory), (ResolveDelegateFactory)GetResolver);
}
public ResolveDelegate<BuilderContext> GetResolver(ref BuilderContext context)
{
return (ref BuilderContext c) => LogManager.GetLogger("AuthenticationLog");
}
}
А затем добавить это в контейнер DI: // оригинал container.AddNewExtension (); // новый контейнер регистратора .AddNewExtension ();
Но тогда ... я получаю следующее:
Объект типа 'log 4net .Core.LogImpl' не может быть преобразован в тип ' Accredit.Commons.Log 4Net .ILogExtender '. Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека, чтобы получить дополнительную информацию об ошибке и ее происхождении в коде.
Что я делаю не так? Любая помощь?