ZetCode

ASP.NET LogInformation

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 LogInformation 方法。此方法对于在 ASP.NET 应用程序中记录信息性消息至关重要。

ASP.NET 通过 ILogger 接口提供了强大的日志记录基础结构。LogInformation 用于记录突出应用程序流程的消息。

基本定义

LogInformation 是 ASP.NET 中 ILogger 接口的一个方法。它会写入描述正常应用程序操作的信息性日志消息。

这些消息通常用于跟踪应用程序流程、记录重要事件以及为调试提供上下文。它们的严重性低于警告或错误。

LogInformation 消息通常会写入各种输出,如控制台、文件或监控系统。级别可以在 appsettings.json 中配置。

ASP.NET LogInformation 示例

以下示例演示了在 ASP.NET 控制器中使用 LogInformation。

Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Logging.ClearProviders();
builder.Logging.AddConsole();

var app = builder.Build();

app.MapGet("/", () => "Hello World!");
app.Run();

这会为应用程序配置控制台日志记录。ClearProviders 方法会删除默认的日志记录器,AddConsole 会添加控制台日志记录。

Controllers/WeatherController.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

[ApiController]
[Route("[controller]")]
public class WeatherController : ControllerBase
{
    private readonly ILogger<WeatherController> _logger;
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild",
        "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    public WeatherController(ILogger<WeatherController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        _logger.LogInformation("Weather forecast requested at {Time}", 
            DateTime.UtcNow);

        var forecast = Enumerable.Range(1, 5).Select(index => 
            new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();

        _logger.LogInformation(
            "Generated {Count} weather forecasts", forecast.Length);

        return forecast;
    }
}

public record WeatherForecast(DateTime Date, int TemperatureC, string? Summary)
{
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}

此控制器演示了 LogInformation 的用法。第一条日志记录了请求预测的时间,包括时间戳。

第二条日志记录了生成的预测数量。这两条日志都使用了结构化日志记录,并在消息模板中使用了命名参数。

ILogger 通过构造函数注入进行注入。泛型类型参数有助于按源类对日志进行分类。

结构化日志记录可实现更好的日志分析。诸如 {Time} 和 {Count} 之类的占位符将成为日志存储系统中的命名属性。

来源

Microsoft ASP.NET 日志记录文档

在本文中,我们探讨了 ASP.NET 8 中的 LogInformation。此强大的日志记录方法有助于跟踪应用程序行为和诊断问题。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 ASP.NET 教程