解释日志记录在 ASP.NET Core 中的工作原理

日志记录是在软件中实时记录事件以及其他信息(例如基础架构详细信息、执行时间等)的过程。日志记录是任何软件应用程序的重要组成部分。拥有日志至关重要,尤其是在出现问题时。日志可帮助您了解故障或性能瓶颈并修复问题。

日志通常写入数据库、控制台或文件,具体取决于应用程序的严重性和便利性。尽管可以在日志中记录任何数据,但您通常会编写信息性消息和错误消息。信息性消息在标准事件发生时捕获标准事件,例如方法调用、用户身份验证、产品检出等。错误消息捕获错误并提供可能帮助您调试程序的所有数据。

ASP.NET Core 提供了一个通用的日志接口,可以轻松地从您的应用程序中记录内容。整个框架和第三方库都使用相同的接口,可以更轻松地搜索日志和诊断问题。该框架还允许您配置日志的详细程度并将日志发送到一个或多个目的地,如文件、控制台或数据库。

在ASP.NETCore 中,日志提供程序存储日志。您可以为您的应用程序配置多个日志记录提供程序。默认ASP.NETCore 配置以下日志记录提供程序:ConsoleDebugEventSourceEventLog(在 Windows 上)。

您可以通过调用ClearProviders并添加所需的特定日志记录提供程序来覆盖默认的日志记录提供程序集。以下代码添加了控制台日志记录提供程序。

public static IHostBuilder CreateHostBuilder(string[] args) =>
   Host.CreateDefaultBuilder(args)
      .ConfigureLogging(logging =>{
         logging.ClearProviders();
         logging.AddConsole();
      })
      .ConfigureWebHostDefaults(webBuilder =>{
         webBuilder.UseStartup<Startup>();
      });

您可以使用ILogger接口创建日志,该接口由ASP.NETCore 依赖注入容器注入到您的代码中。以下示例说明了这一点。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;

namespace Razor.Pages{
   public class IndexModel : PageModel{
      private readonly ILogger<IndexModel> _logger;
      public IndexModel(ILogger<IndexModel> logger){
         _logger = logger;
      }

      public void OnGet(){
         _logger.LogInformation("访问的索引页。");
      }
   }
}

日志记录对于快速诊断、故障排除和修复生产应用程序中的错误至关重要。最好尽快配置日志记录,最好是在您开始开发应用程序时。