具有Unity IoC的MVC 5 / .Net框架 - 注册ILogger

问题描述 投票:0回答:1

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

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

对于应用程序中的所有其他服务,它只是在RegisterTypes中添加映射到UnityConfig.cs的情况

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

如果我能够使用.Net Core,问题解决了,它已经准备就绪,但无法做到(不要问为什么,但我正在尝试)...

c# asp.net-mvc logging unity-container
1个回答
2
投票

首先,您需要选择日志库 - 常见的是log4net和NLog。已经有大量的材料和安装说明,包括官方说明。你不需要为NLog提供DI,它已经有了一个静态帮助器,但是你可以将它封装到你自己的抽象中。所以你需要有一个接口,例如,ILogger和它的实现 - 类NLogLogger。把你需要的方法放在ILogger里面你喜欢的方式 - 它可以是LogError(msg, ex)LogDebug(msg)LogInfo(msg),或者用一种方法与级别参数Log(level, msg, ex),其中你的水平是枚举:ErrorDebugTrace等你可以将该界面放在应用程序中核心。

NLogLogger将是记录器的具体实现,因此您可以在以后替换它。把它放到基础设施中。实现它以及您可以在GitHub repo上找到的官方教程。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.