【发布时间】:2012-01-30 15:20:55
【问题描述】:
我使用 Windsor 容器跟踪了tutorial to setup log4net。和教程一样,我设置了 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);
}
在 Application_Start() 期间正在调用 LoggerInstaller,但没有注入。任何帮助,将不胜感激。我确定这可能是我忽略的一些简单的事情。
【问题讨论】:
标签: c# asp.net-mvc log4net castle-windsor