首页 > 其他分享 >不要用第三方日志包了Microsoft.Extensions.Logging功能就很强大

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

时间:2023-12-05 18:47:03浏览次数:35  
标签:Logging 示例 builder Microsoft Extensions 日志 logger

在.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<Program>();

在上面的示例中,我们首先创建了一个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 Karambolo.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 Karambolo.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<Program>();

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

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


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

 

标签:Logging,示例,builder,Microsoft,Extensions,日志,logger
From: https://www.cnblogs.com/hanbing81868164/p/17877888.html

相关文章

  • Wpf 第三方Mvvm包(mvvmLight/Microsoft.Toolkit.Mvvm/CommunityToolkit.Mvvm)
    十年河东,十年河西,莫欺少年穷学无止境,精益求精 mvvmLight和 Microsoft.Toolkit.Mvvm已被Nuget弃用且不再更新,在此不作说明CommunityToolkit.Mvvm是NetCore版本引用包,详情参考:WPFMVVM框架:CommunityToolkit.Mvvm包使用介绍1、wpf项目中使用 CommunityToolkit.Mvvm(NetCore3.1......
  • Python报错:performance hint: av/logging.pyx:232:5: the GIL to be acquired
     参考:https://stackoverflow.com/questions/77410272/problems-installing-python-av-in-windows-11https://github.com/PyAV-Org/PyAV/issues/1177  ================================  报错信息:C:\Windows.old\Users\chris>pipinstallavDefaultingtouser......
  • error: Microsoft Visual C++ 14.0 or greater is required
    1、错误背景python在安装aiohttp库时,出现MicrosoftVisualC++14.0orgreaterisrequired的提示:2、解决方案按照错误提示,访问https://visualstudio.microsoft.com/visual-cpp-build-tools/,下载生成工具:执行下载的exe执行文件:选择使用C++桌面开发,选......
  • Unity 文字转语音 Microsoft Interop.SpeechLib使用
    需要提前做以下设置:Unity中需要设置:Editor->ProjectSettings->Player->OtherSettings->ApiCompatibilityLevel->选择.Net4.x系统需要提前下载中文语音包Win11可以在设置->时间和语言->语音中查看已下载的语音其中HuihuiYaoyaoKangkang为中文语音......
  • Wpf 第三方Mvvm包(mvvmLight/Microsoft.Toolkit.Mvvm/CommunityToolkit.Mvvm)
    十年河东,十年河西,莫欺少年穷学无止境,精益求精 mvvmLight和 Microsoft.Toolkit.Mvvm已被Nuget弃用且不再更新,在此不作说明CommunityToolkit.Mvvm是NetCore版本引用包,详情参考:WPFMVVM框架:CommunityToolkit.Mvvm包使用介绍1、wpf项目中使用 CommunityToolkit.Mvvm(NetCo......
  • Python logging 模块 捕获异常,并保存为 logging 文件
    示例一:logging模块简单使用 basicConfig#!/usr/bin/python2.7#-*-coding:utf-8-*-"""@author:tz_zs"""importloggingimporttimeimporttracebackimportsyslogging.basicConfig(level=logging.DEBUG,form......
  • Django配置为连接到Microsoft SQL Server
    可以将Django配置为连接到MicrosoftSQLServer2019。为此,你需要更改数据库设置中的一些配置选项。首先,确保你已经安装了django和pyodbc这两个库: pipinstalldjangopyodbc 然后,你需要在settings.py文件中修改DATABASES部分。以下是连接到SQLServer的示例......
  • 如何解决打不开Microsoft Store的痛处?
    换了机房后,我最喜欢的计算器和画图3d没有了,网上的方法都行不通,怎么办?第一步,在百度上搜索你想安装的东西,例如我搜索的画图3d,就会有这个链接。然后,把这个链接复制到这个网站的搜索框中,就会有很多的应用。因为其中有一些应用为依赖项,我们对于每个不同的应用都要下载最新的appx文件......
  • WPF-----Microsoft.Extensions 探索 / 依赖注入(DI)
    1 对于IOC的具体介绍  Microsoft.Extensions探索/依赖注入(DI)-知乎(zhihu.com) 使用DI容器需要熟悉下面的接口与类型,Microsoft.Extensions.DependencyInjection.IServiceCollection,该接口包含了一系列Add扩展方法来添加你的服务,该接口的默认实现为Microsoft.Exte......
  • 什么是 Microsoft Outlook 的 Addin
    Outlook的Addin,又被称为“Outlook插件”,是一种可以扩展和增强Outlook功能的软件工具。插件可以深度集成到Outlook用户界面中,并在用户需要时提供自定义的功能和服务。例如,一个插件可能会提供特定的电子邮件管理功能,如排序、标记、归档或者搜索,或者提供与第三方服务的集成,如......