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

日志记录 – 如何在ASP.NET MVC 6中注册ILogger进行注入

发布时间:2020-12-16 00:21:36 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC 6(beta-4)应用程序。 public void ConfigureServices(IServiceCollection services){ // Logging services.AddLogging(); // ...}public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerfactory
我有一个ASP.NET MVC 6(beta-4)应用程序。
public void ConfigureServices(IServiceCollection services)
{
    // Logging
    services.AddLogging();

    // ...
}

public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerfactory)
{
    // Add the console logger.
    loggerfactory.AddConsole(minLevel: LogLevel.Warning);

    // ...
}

我有一个控制器

public class HomeController : 
    Controller
{
    ILogger _logger;

    public HomeController(ILogger logger) 
    {
        _logger = logger;
    }

    // ...
}

但是当我没有正确地得到服务注册时:InvalidOperationException:尝试激活“HomeController”时,无法解析“Microsoft.Framework.Logging.ILogger”类型的服务。注册该记录器时我做错了什么?

解决方法

我假设services.AddLogging();正在做正确的事情并注册ILogger。在查看源( https://github.com/aspnet/Logging/blob/d874c5726e713d3eb34938f85faf7be61aae0f2a/src/Microsoft.Framework.Logging/LoggingServiceCollectionExtensions.cs)后,我发现它实际上是注册ILogger<>。将ILogger的签名更改为ILogger< HomeController>使上述示例工作。
public class HomeController : 
    Controller
{
    ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger) 
    {
        _logger = logger;
    }

    // ...
}

感谢@Steve在正确的轨道上找到我。

(编辑:李大同)

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

    推荐文章
      热点阅读