asp.net-core - ASP.NET Core ILoggerFactory 是否为每个注册的 LoggerProvider 初始化一个实例?
问题描述
我了解 ASP.NET Core 使用 Microsoft.Extension.Logging 进行日志记录。根据官方文档,默认的 ASP.NET Core 项目模板调用 CreateDefaultBuilder,它添加了以下日志记录提供程序:
- 调试,
- 安慰
- 事件源
- 事件簿
但它从未提及默认使用哪个提供程序(由 DI 容器用于创建实际的记录器)。例如,如果我有一个调用的类,_logger.LogError(ex, "ERROR", ex.Message)
错误消息会被发送到控制台、调试窗口、事件日志系统还是所有这些?使用 ASP.NET Core 的优势在于,它使开发人员从编写繁琐的样板代码中解放出来,但与此同时,这也引起了很多混乱。LoggerFactory 如何决定在这种情况下使用哪个 loggerProvider?如果使用了所有已注册的提供程序,这是否意味着 DI 容器会为一个 ILogger 接口创建多个记录器实例?
解决方案
LoggerFactory
正在使用CreateLoggers()中的所有提供者创建一个记录器
然后会为Log(...)Logger
中的所有记录器提供程序调用 log
推荐阅读
- time-series - Superset:如何改变“时间颗粒”
- python-3.x - 将ASCII转换为十进制python
- git - Git如何在分支之间传输更改?
- timer - 中断与任务、定时器中断、任务的关系
- google-sheets - 整个列的 Google 表格条件格式
- sql-server - 存在的机制
- python - 根据另一个具有不同大小python的列表替换nan的列表
- node.js - 从 API 正确返回 x-auth 令牌
- postgresql - 气流 psycopg2.OperationalError: FATAL: 抱歉,已经有太多客户
- javascript - 静态网站翻译问题