加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Ninject.Extensions.Logging.nlog2 – 如何?

发布时间:2020-12-15 22:53:25 所属栏目:asp.Net 来源:网络整理
导读:浏览nuget图书馆,我遇到了 Ninject.Extensions.Logging.nlog2.一些搜索和试图弄清楚,我似乎找不到如何或为什么你会使用这个扩展名. 建议使用MVC 3吗? 究竟是什么点? 你如何使用它? 解决方法 真的很简单NLog和log4net都希望您使用单例/静态引用来获取记录
浏览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,那么这是一个很好的方式来将代码与任何特定的日志库分离开来.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读