Я следовал учебнику , чтобы настроить log4net с использованием контейнера Windsor.Как и в учебном пособии, я настраиваю класс LoggerInstaller:
public class LoggerInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.AddFacility<LoggingFacility>(
f => f.LogUsing(LoggerImplementation.Log4net)
.WithConfig("log4net.config"));
}
}
В Global.asax у меня есть следующие методы:
private static void BootStrapContainer()
{
container = new WindsorContainer()
.Install(FromAssembly.This());
var controllerFactory = new WindsorControllerFactory(container.Kernel);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
BootStrapContainer();
}
И тип ILogger, который нужно ввести:
public ILogger Logger { get; set; }
Это прекрасно работает на контроллерах, у которых есть свойство ILogger, но я не могу заставить его вставить его в Global.asax.Что я хочу сделать, так это регистрировать необработанные исключения в методе Application_Error следующим образом:
void Application_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
Logger.Error("App_Error", ex);
}
LoggerInstaller вызывается во время Application_Start (), но не внедряется.Любая помощь будет оценена.Я уверен, что это, вероятно, что-то простое, я пропускаю.