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

前端之家收集整理的这篇文章主要介绍了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,那么这是一个很好的方式来将代码与任何特定的日志库分离开来.

原文链接:https://www.f2er.com/aspnet/249711.html

猜你在找的asp.Net相关文章