当前位置: 首页 > 编程语言 > C#

使用Autofac将log4net注入控制器分享

时间:2023-04-10 13:11:38 C#

C#学习教程:使用Autofac将log4net注入到控制器中)'”。我创建了一个模块来注入具有正确类型的Log类:}staticvoidOnComponentPreparing(objectPreventEender)eparing{vart=e.Component.Activator.LimitType;e.Parameters=e.Parameters.Union(new[]{newResolvedParameter((p,i)=>p.ParameterType==typeof(ILog),(p,i)=>LogManager.GetLogger(t))});然后我在我的ASP.NETMVCApplication_Start方法中注册模块:builder.RegisterControllers(typeof(MvcApplication).Assembly);varcontainer=builder.Build();DependencyResolver.SetResolver(新的AutofacDependencyResolver(容器));builder.RegisterModule(newLogInjectionModule());AreaRegistration.RegisterAllAreas();注册全局过滤器(全局过滤器);注册Routes(路由表。路由);我在控制器中添加了一个构造函数,它将ILog作为参数:namespaceMvcApplication6.Controllers{publicclassHomeController:Controller{ILog_log;公共HomeController(ILog记录器){_log=记录器;}publicActionResultIndex(){ViewBag.Message="欢迎使用ASP.NETMVC!";_log.Info("来自Index()的日志信息");返回视图();}publicActionResultAbout(){_log.Info(“来自About()的日志消息”);返回视图();我相信我错过了一个步骤,所以任何帮助将不胜感激我不确定这是否会导致您的问题,但您应该调用构建器。Build()在尝试将模块添加到ContainerBuilder之前;像这样:ContainerBuilderbuilder=newContainerBuilder();builder.RegisterControllers(typeof(MvcApplication).Assembly);builder.RegisterModule(newLogInjectionModule());varcontainer=builder.Build();DependencyResolver.SetResolver(新的AutofacDependencyResolver(容器));另一个建议是不要注入记录器。通常当我设计一个类时,使用构造函数依赖性,我试图表达我正在建模的组件的逻辑业务依赖性。日志记录主要是与应用程序正交的实现细节。至少使用log4net,您可以在任何需要使用LogManager.GetLogger(type)创建的日志记录的类中拥有静态成员。为了轻松添加记录器,您可以使用VisualStudioCodeSnippets。以上就是C#学习教程:使用Autofac在controller中注入log4net分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: