首页 > 解决方案 > 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 接口创建多个记录器实例?

标签: asp.net-corelogging

解决方案


LoggerFactory正在使用CreateLoggers()中的所有提供者创建一个记录器

然后会为Log(...)Logger中的所有记录器提供程序调用 log


推荐阅读