MVC 5/.Net框架与Unity IoC-注册ILogger



对于我当前的项目,一个WebAPI/MVC环境,我使用Unity IoC进行DI。

由于MVC 5/.Net框架没有内置的日志记录,所以我需要一些东西,但也想使用DI来引用服务,但我不知道如何设置/注册记录器服务。

对于应用程序中的所有其他服务,只需将映射添加到UnityConfig.cs中的RegisterTypes

目标部署将是Azure Web App服务,所以我需要具有这些功能的东西。

如果我能够使用.Net Core,问题已经解决,一切都准备好了,但无法做到(不要问为什么,但我正在尝试(。。。

首先,您需要选择日志库——常见的是log4net和NLog。已经有成吨的材料带有安装说明,包括官方说明。NLog不需要DI,它已经有了一个静态助手,但您可以将其封装到自己的抽象中。因此,您需要一个接口,例如ILogger及其实现类NLogLogger。以您喜欢的方式将您需要的方法放在ILogger中-它可以是LogError(msg, ex)LogDebug(msg)LogInfo(msg),也可以是一个级别参数为Log(level, msg, ex)的方法,其中级别是枚举:ErrorDebugTrace等。您可以将该接口放在应用程序核心中。

NLogLogger将是记录器的具体实现,所以您稍后可以替换它。将其放入基础设施中。将其与GitHub repo上的官方教程一起实现。

您可以使用XML文件配置NLog,只需将其放在应用程序根目录中,然后将其中一个用于写入日志的示例复制到文件或控制台中。

最后,只需将接口与DI配置中的类绑定,就像任何其他抽象一样。现在你可以把它注射到你想要的每一个地方。

最新更新