首页 > 解决方案 > 如何将日志记录添加到 Blazor 服务器端组件?

问题描述

我正在尝试创建一个托管的 ASP.net Blazor 应用程序并尝试将记录器放入我的控制器中。

我有这个:

public MyController(ILogger logger) {
    _logger = logger;
    // more initialization
}

但是当我运行它时,我得到:

fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'MyApp.Server.Controllers.MyController'.

由于有很多日志消息滚动,我猜 Blazor 已经初始化了一个记录器。

我如何访问这个?

标签: c#asp.net-core

解决方案


非泛型ILogger未向服务集合注册。相反,您应该注入一个通用的ILogger<T>. 泛型类型参数T用于设置与记录器实例链接的类别名称。它使您可以轻松查看日志调用的来源。

通常,您将使用记录器的类型指定为泛型类型参数。所以在你的情况下,你会使用ILogger<MyController>

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

请注意,对于此行为,服务器端 Blazor 并没有什么特别之处。这是标准的 ASP.NET Core,控制器也是普通的 ASP.NET Core 控制器。


推荐阅读