9 .net core 日志记录

本文介绍ASP.NET Core中日志记录的实现方法,包括注入日志记录器、配置日志提供程序、设置日志级别及事件ID,以及如何通过应用设置文件控制日志行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何记录日志

注入日志记录器

public class TodoController : Controller
{
    private readonly ILogger _logger;

    public TodoController(
        ILogger<TodoController> logger)
    {
        _todoRepository = todoRepository;
        _logger = logger;
    }

然后在该记录器对象上调用日志记录方法

public IActionResult GetById (string id) {
    _logger.LogInformation (LoggingEvents.GetItem, "Getting item {ID}", id);
    _logger.LogWarning (LoggingEvents.GetItemNotFound, "GetById({ID}) NOT FOUND", id);
    ...
}

如何添加提供程序

public static void Main (string[] args) {
    var webHost = new WebHostBuilder ()
        .UseKestrel ()
        .UseContentRoot (Directory.GetCurrentDirectory ())
        // 配置 配置文件
        .ConfigureAppConfiguration ((hostingContext, config) => {
            var env = hostingContext.HostingEnvironment;
            config.AddJsonFile ("appsettings.json", optional : true, reloadOnChange : true)
                .AddJsonFile ($"appsettings.{env.EnvironmentName}.json", optional : true, reloadOnChange : true);
            config.AddEnvironmentVariables ();
        })
        // 添加日志提供者
        .ConfigureLogging ((hostingContext, logging) => {
            logging.AddConfiguration (hostingContext.Configuration.GetSection ("Logging"));
            logging.AddConsole ();
            logging.AddDebug ();
        })
        .UseStartup<Startup> ()
        .Build ();

    webHost.Run ();
}

配置

日志记录配置通常由应用设置文件的 Logging 部分提供。

{
    "Logging": {
        // 要使用的日志级别,大于或等于该级别的日志将会被记录
        "LogLevel": {
            "Default": "Debug",
            "System": "Information",
            "Microsoft": "Information"
        },
        "Console": {
            "IncludeScopes": "true"
        }
    }
}

日志类别

在创建 ILogger 对象时指定类别。 类别可以是任意字符串,但约定使用写入日志的类的完全限定名称。
如下方示例所示,在大多数情况下使用 ILogger 更简单。

public class TodoController : Controller
{
    private readonly ILogger _logger;

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

日志级别

ASP.NET Core 定义了以下日志级别(按严重性从低到高排列)。
Trace = 0
表示仅对于开发人员调试问题有价值的信息。不要在生产环境中启用它们。 默认情况下禁用。
Debug = 1
表示在开发和调试过程中短期有用的信息。 通常不会在生产中启用 Debug 级别日志,因为日志数量过多。
Information = 2
用于跟踪应用程序的常规流。 这些日志通常有长期价值。
Warning = 3
表示应用程序流中的异常或意外事件。
Error = 4
表示无法处理的错误和异常。
Critical = 5
需要立即关注的失败。 例如数据丢失、磁盘空间不足。

日志事件 ID
每次写入日志时都可指定一个事件 ID。

筛选日志规则

配置数据根据 提供程序 和 类别 指定 最低日志级别 ,如下方示例所示:

{
    "Logging": {
        // Debug 提供器使用的配置
        "Debug": {
            "LogLevel": {
                "Default": "Information"
            }
        },
        // 控制台提供器使用的配置
        "Console": {
            "IncludeScopes": false,
            "LogLevel": {
                "Microsoft.AspNetCore.Mvc.Razor.Internal": "Warning",
                "Microsoft.AspNetCore.Mvc.Razor.Razor": "Debug",
                "Microsoft.AspNetCore.Mvc.Razor": "Error",
                "Default": "Information"
            }
        },
        // 其他提供器使用的配置
        "LogLevel": {
            "Default": "Debug"
        }
    }
}

内置日志记录提供程序(提供器)

ASP.NET Core 提供以下提供程序:
控制台
调试
EventSource
EventLog
TraceSource
Azure 应用服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值