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


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

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

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

在 ASP.NET Core 中,日志提供程序存储日志。您可以为应用程序配置多个日志提供程序。默认的 ASP.NET Core 配置以下日志提供程序:**控制台**、**调试**、**EventSource** 和 **EventLog**(在 Windows 上)。

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

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

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

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("Index page visited.");
      }
   }
}

日志记录对于快速诊断、排查和修复生产应用程序中的错误至关重要。最佳实践是在开发应用程序的早期配置日志记录,理想情况下是在开始开发时。

更新于: 2021年6月22日

6K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告