翼度科技»论坛 编程开发 .net 查看内容

不要用第三方日志包了Microsoft.Extensions.Logging功能就很强大

9

主题

9

帖子

27

积分

新手上路

Rank: 1

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

1. 创建Logger

首先,我们需要创建一个Logger实例,以便在应用程序中记录日志。以下是创建Logger的基本方法:
  1. using Microsoft.Extensions.Logging;
  2. var loggerFactory = LoggerFactory.Create(builder =>
  3. {
  4.     builder.AddConsole(); // 输出日志到控制台
  5. });
  6. var logger = loggerFactory.CreateLogger<Program>();
复制代码
在上面的示例中,我们首先创建了一个LoggerFactory实例,然后通过它创建了一个Logger。我们还使用AddConsole方法将日志输出到控制台。
2. 记录日志消息

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

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Critical
下面是如何使用Logger记录不同级别的日志消息的示例:
  1. logger.LogInformation("这是一条信息日志");
  2. logger.LogWarning("这是一条警告日志");
  3. logger.LogError("这是一条错误日志");
  4. logger.LogCritical("这是一条严重错误日志");
复制代码
3. 提供上下文信息

通常,我们需要将一些上下文信息记录到日志中,以帮助排查问题。可以使用LogInformation等方法的重载版本,传递额外的参数,如下:
  1. var userId = 123;
  2. logger.LogInformation("用户 {UserId} 登录成功", userId);
复制代码
在上述示例中,我们将userId作为参数传递给日志消息,以便将其包含在日志中。
4. 使用日志范围

有时,我们希望在一段代码块中记录一组相关日志消息,并希望这些消息具有相同的上下文信息。这时可以使用LogScope,如下所示:
  1. using (logger.BeginScope("交易处理 - 订单 {OrderId}", orderId))
  2. {
  3.     logger.LogInformation("订单处理中...");
  4.     // 执行一些订单处理逻辑
  5.     logger.LogInformation("订单处理完成");
  6. }
复制代码
在上述示例中,我们使用BeginScope方法创建了一个日志范围,将其包含在指定的上下文信息中。在范围内的所有日志消息都会自动包含这些上下文信息。
5. 配置日志级别

我们可以在应用程序中配置所需的最低日志级别,以决定哪些日志消息将被记录。通常,这是在应用程序的配置文件中完成的。以下是一个示例:
  1. var loggerFactory = LoggerFactory.Create(builder =>
  2. {
  3.     builder.AddConsole();
  4.     builder.SetMinimumLevel(LogLevel.Information); // 设置最低日志级别
  5. });
复制代码
在上述示例中,我们使用SetMinimumLevel方法来配置最低日志级别。只有达到或高于指定级别的日志消息才会被记录。
二、按天生成日志文件

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

首先,我们需要安装一些必要的包,以便实现按天生成日志文件。使用NuGet包管理器或.NET CLI可以轻松完成这一步骤:
  1. dotnet add package Karambolo.Extensions.Logging.File
复制代码
2. 配置文件日志提供程序

接下来,我们需要配置文件日志提供程序,以便将日志消息记录到文件中。以下是如何配置文件提供程序的示例:
  1. var loggerFactory = LoggerFactory.Create(builder =>
  2. {
  3.     builder.AddFile("logs/myapp-{Date}.txt");
  4.     builder.SetMinimumLevel(LogLevel.Information);
  5. });
复制代码
在上述示例中,我们使用AddFile方法配置文件日志提供程序,并指定日志文件的名称模式。{Date}将根据日志消息的日期自动替换为实际日期。
3. 示例代码

以下是一个完整的示例代码,演示了如何使用
Microsoft.Extensions.Logging按天生成日志文件:
  1. using System;
  2. using Microsoft.Extensions.Logging;
  3. using Karambolo.Extensions.Logging.File;
  4. class Program
  5. {
  6.     static void Main()
  7.     {
  8.         var loggerFactory = LoggerFactory.Create(builder =>
  9.         {
  10.             builder.AddFile("logs/myapp-{Date}.txt");
  11.             builder.SetMinimumLevel(LogLevel.Information);
  12.         });
  13.         var logger = loggerFactory.CreateLogger<Program>();
  14.         for (int i = 0; i < 10; i++)
  15.         {
  16.             logger.LogInformation("这是一条信息日志 - {LogCount}", i);
  17.         }
  18.     }
  19. }
复制代码
上述示例中,我们配置了文件日志提供程序,日志文件的名称模式包含了{Date},并循环记录了10条日志消息。每天,日志文件将被归档到不同的文件中,以便跟踪和检查以前的日志。

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



来源:https://www.cnblogs.com/hanbing81868164/archive/2023/12/05/17877888.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具