不要用第三方日志包了Microsoft.Extensions.Logging功能就很强大
创始人
2025-07-13 13:51:38
0

在.NET中,Microsoft.Extensions.Logging是一个广泛使用的日志库,用于记录应用程序的日志信息。它提供了丰富的功能和灵活性,使开发人员能够轻松地记录各种类型的日志,并将其输出到不同的目标,包括日志文件。本文将详细介绍Microsoft.Extensions.Logging的各种基础功能以及如何按天生成日志文件。

一、Microsoft.Extensions.Logging基础功能

1. 创建Logger

首先,我们需要创建一个Logger实例,以便在应用程序中记录日志。以下是创建Logger的基本方法:

using Microsoft.Extensions.Logging;

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole(); // 输出日志到控制台
});

var logger = loggerFactory.CreateLogger();

在上面的示例中,我们首先创建了一个LoggerFactory实例,然后通过它创建了一个Logger。我们还使用AddConsole方法将日志输出到控制台。

2. 记录日志消息

一旦有Logger实例,我们可以使用它来记录不同级别的日志消息。
Microsoft.Extensions.Logging定义了以下日志级别(按严重性递增排列):

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Critical

下面是如何使用Logger记录不同级别的日志消息的示例:

logger.LogInformation("这是一条信息日志");
logger.LogWarning("这是一条警告日志");
logger.LogError("这是一条错误日志");
logger.LogCritical("这是一条严重错误日志");

3. 提供上下文信息

通常,我们需要将一些上下文信息记录到日志中,以帮助排查问题。可以使用LogInformation等方法的重载版本,传递额外的参数,如下:

var userId = 123;
logger.LogInformation("用户 {UserId} 登录成功", userId);

在上述示例中,我们将userId作为参数传递给日志消息,以便将其包含在日志中。

4. 使用日志范围

有时,我们希望在一段代码块中记录一组相关日志消息,并希望这些消息具有相同的上下文信息。这时可以使用LogScope,如下所示:

using (logger.BeginScope("交易处理 - 订单 {OrderId}", orderId))
{
    logger.LogInformation("订单处理中...");
    // 执行一些订单处理逻辑
    logger.LogInformation("订单处理完成");
}

在上述示例中,我们使用BeginScope方法创建了一个日志范围,将其包含在指定的上下文信息中。在范围内的所有日志消息都会自动包含这些上下文信息。

5. 配置日志级别

我们可以在应用程序中配置所需的最低日志级别,以决定哪些日志消息将被记录。通常,这是在应用程序的配置文件中完成的。以下是一个示例:

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
    builder.SetMinimumLevel(LogLevel.Information); // 设置最低日志级别
});

在上述示例中,我们使用SetMinimumLevel方法来配置最低日志级别。只有达到或高于指定级别的日志消息才会被记录。

二、按天生成日志文件

现在,让我们来看看如何按天生成日志文件。通常,我们会希望将日志消息记录到文件中,并按日期对日志文件进行归档。

1. 安装相关包

首先,我们需要安装一些必要的包,以便实现按天生成日志文件。使用NuGet包管理器或.NET CLI可以轻松完成这一步骤:

dotnet add package Microsoft.Extensions.Logging.File

2. 配置文件日志提供程序

接下来,我们需要配置文件日志提供程序,以便将日志消息记录到文件中。以下是如何配置文件提供程序的示例:

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddFile("logs/myapp-{Date}.txt");
    builder.SetMinimumLevel(LogLevel.Information);
});

在上述示例中,我们使用AddFile方法配置文件日志提供程序,并指定日志文件的名称模式。{Date}将根据日志消息的日期自动替换为实际日期。

3. 示例代码

以下是一个完整的示例代码,演示了如何使用
Microsoft.Extensions.Logging按天生成日志文件:

using System;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.File;

class Program
{
    static void Main()
    {
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddFile("logs/myapp-{Date}.txt");
            builder.SetMinimumLevel(LogLevel.Information);
        });

        var logger = loggerFactory.CreateLogger();

        for (int i = 0; i < 10; i++)
        {
            logger.LogInformation("这是一条信息日志 - {LogCount}", i);
        }
    }
}

上述示例中,我们配置了文件日志提供程序,日志文件的名称模式包含了{Date},并循环记录了10条日志消息。每天,日志文件将被归档到不同的文件中,以便跟踪和检查以前的日志。

Microsoft.Extensions.Logging是.NET中强大的日志库,可以用于记录各种类型的日志消息。通过配置文件日志提供程序,我们可以按天生成日志文件,以便更好地管理和分析日志。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...