asp.net-mvc – Ninject.Extensions.Logging.nlog2 – 如何?
浏览nuget图书馆,我遇到了
Ninject.Extensions.Logging.nlog2.一些搜索和试图弄清楚,我似乎找不到如何或为什么你会使用这个扩展名.
建议使用MVC 3吗? 究竟是什么点? 你如何使用它? 解决方法
真的很简单NLog和log4net都希望您使用单例/静态引用来获取记录器实例:
private static Logger logger = LogManager.GetCurrentClassLogger(); 这被广泛认为是一种反模式,但即使你没有问题,如果你想实现依赖注入,它仍然会反对谷物.在NLog的情况下,它不是一个ILog或ILogger接口,如log4net,它是一个实际的类.这具有某些缺点,例如无法创建代理,延迟加载,缓存等. Ninject.Extensions.Logging项目所做的是首先使用诸如Info,Error等简单方法提供一个抽象的ILogger类,因此您可以将其注入为依赖关系,并根据需要切换日志框架: public class WidgetProvider { private readonly ILogger log; public WidgetProvider(ILogger log) { this.log = log; } } 这是DI应该是如何工作的 – 一个类永远不会出来抓取自己的依赖关系,而是由构造函数或调用者提供如上.假设您已将Ninject自身集成到您的项目中,那么这就是您所需要做的一切,没有额外的工作. 至于Ninject.Extensions.Logging.NLog2是否具体实现 – 它仅提供基于NLog2的Ninject.Extensions.Logging的实现.基本记录库实际上并不包含ILogger的任何实现,您必须插入其中一个特定库(NLog,NLog2或log4net)才能使其运行. 如果您切换您的DI库更频繁地切换记录器,那么不要打扰它.但是,如果你像我一样在几乎每个项目中使用Ninject,那么这是一个很好的方式来将代码与任何特定的日志库分离开来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp-classic – 使用经典asp文件的绝对路径
- asp.net – MVC代码重组
- asp.net – 如何从MVC3中的控制器名称中删除“Controller”
- asp.net – ActionLink 404错误
- asp.net – 具有一个无效的SelectedValue,因为它在项目列表
- ASP.NET:它是否涉及Active X?
- 如何使用WebAPI没有ASP.NET MVC?
- asp.net – 在Visual Studio 2012中调试很慢
- asp.net-mvc – 如何为MVC创建具有1对多关联的虚假存储库
- asp.net-mvc – ASP.Net Mvc固定长度字符串数据注释