c# - 如何将日志记录添加到 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 已经初始化了一个记录器。
我如何访问这个?
解决方案
非泛型ILogger
未向服务集合注册。相反,您应该注入一个通用的ILogger<T>
. 泛型类型参数T
用于设置与记录器实例链接的类别名称。它使您可以轻松查看日志调用的来源。
通常,您将使用记录器的类型指定为泛型类型参数。所以在你的情况下,你会使用ILogger<MyController>
:
public MyController(ILogger<MyController> logger)
{
_logger = logger;
}
请注意,对于此行为,服务器端 Blazor 并没有什么特别之处。这是标准的 ASP.NET Core,控制器也是普通的 ASP.NET Core 控制器。
推荐阅读
- ruby-on-rails - 从 RubyMine 运行 Rspec 时未找到任何测试
- react-native - undefined 不是对象(正在评估...)- React Native
- macos - 无法在 docker 容器内访问 kubectl port-forward
- python - 一列的平均值基于另一列的值
- netsuite - 显示活跃的父母和不活跃的孩子
- vue.js - 使用 require 在 vue 中显示图像导致 vue 应用程序重新渲染
- rhel7 - ASAN:进程中止时未生成核心文件
- javascript - 生成的 blob 不包含完整的数据集
- javascript - 尝试在javascript中使用laravel资产()助手异步显示图像
- javascript - NodeJS MySQL池死了没有抛出异常