在.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中强大的日志库,可以用于记录各种类型的日志消息。通过配置文件日志提供程序,我们可以按天生成日志文件,以便更好地管理和分析日志。

不要用第三方日志包了Microsoft.Extensions.Logging功能就很强大的更多相关文章

  1. Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例

    本文目录 1. Net下日志记录 2. NLog的使用     2.1 添加nuget引用NLog.Web.AspNetCore     2.2 配置文件设置     2.3 依赖配置及调用     ...

  2. asp.net core 2.0 Microsoft.Extensions.Logging 文本文件日志扩展

    asp.net core微软官方为日志提供了原生支持,有如下实现 Console Debug EventLog AzureAppServices TraceSource EventSource 并且在 ...

  3. microsoft.extensions.logging日志组件拓展(保存文本文件)

    Microsoft.Extensions.Logging 日志组件拓展 文件文本日志 文件文本日志UI插件 自定义介质日志 Microsoft.Extensions.Logging.File文件文本日 ...

  4. 将日志(Microsoft.Extensions.Logging)添加到.NET Core控制台应用程序

    在.NET Core项目中,日志记录是通过依赖项注入进行管理的. 尽管这对于ASP.NET项目效果很好,但在启动Startup.cs中的新项目时,所有这些都会自动创建,而在控制台应用程序中则需要一些配 ...

  5. 微软日志工厂 Microsoft.Extensions.Logging 中增加 log4net 的日志输出

    前提: 需要nuget   Microsoft.Extensions.Logging.Log4Net.AspNetCore   2.2.6: 描述:解决 .net core 微软日志工厂 Micros ...

  6. Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'xxxxx.Controllers.xxxxController'.

    Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activa ...

  7. 检测到包降级: Microsoft.Extensions.Configuration.Abstractions 从 2.1.1 降 2.1.0

    解决方法:工具-nuget管理包-程序管理控制台-选择 项目- 执行 -Install-Package Microsoft.Extensions.Configuration.Abstractions ...

  8. golang第三方日志包seelog配置文件详解

    开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提.在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一.seelog主要功能下面我 ...

  9. 乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 官方扩展集锦(Microsoft.Extensions on Nuget)

    什么是Microsoft.Extensions .NET Platform Extensions是一套.Net官方的API集合,提供了一些常用的编程模式和实用工具,例如依赖项注入.日志记录.缓存.Ho ...

  10. Go中的日志及第三方日志包logrus

    有别的语言使用基础的同学工作中都会接触到日志的使用,Go中自然也有log相关的实现.Go log模块主要提供了3类接口,分别是 "Print .Panic .Fatal ",对每一 ...

随机推荐

  1. PE文件结构2(实现PE文件载入)

    现在我们已经学完了PE文件格式,但是尚还停留在纸上谈兵的阶段,作为Windows系统上的可执行文件格式,PE文件结构总是和结构体,指针等紧密联系在一起的.理解它的最好方法就是通过写一个类似LordPE ...

  2. 为什么 API 治理需要内部倡导

    API 治理旨在帮助人们通过 API 实现最大价值.但是,只有了解 API 是什么以及 API 的重要性,并且认识到 API 治理是在帮助他们而不是监管他们,才能实现这一目标.这就是为什么在任何 AP ...

  3. 产品代码都给你看了,可别再说不会DDD(四):代码工程结构

    这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...

  4. mac安装mysql8.0

    1.进入下载页 历史版本:https://downloads.mysql.com/archives/community/ 最新版本:https://dev.mysql.com/downloads/my ...

  5. 使用GPU搭建支持玛雅(Maya)和Adobe AI,DW,PS的职校云计算机房

    背景 学校为职业学校,计算机教室需要进行Maya.Adobe Illustrator.Adobe Dreamweaver.Adobe PhotoShop等软件的教学.每个教室为35用户.资源需求为4核 ...

  6. 在 Net7.0环境下通过反射创建泛型实例和调用泛型方法

    一.介绍 最近没事干,就用闲暇时间写点东西,也记录一下温习历程.老人说的好,好记性,不如烂笔头.时间一长,当时记忆的再清楚,都会变得模糊,索性就写博客记录下来,如果下次需要,直接打开博客就找到了,不用 ...

  7. LDA主题模型讲解及代码Python实现

    目录 1. LDA主题模型详解 1.1 Beta/Dirichlet 分布的一个性质 1.2 LDA-math-MCMC 1.2.1 重要理解 1.3 Gibbs Sampling 2. 所需工具库 ...

  8. Centos7中防火墙打开3306端口(亲测)

    开放3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent     开启防火墙 systemctl start firewa ...

  9. ora2pg使用记录

    ora2pg使用记录 前言 这篇文章是我在学习使用ora2pg过程中的学习记录,以便日后遗忘查阅: 诸君也可跟随我的步伐了解一下ora2pg,或可移步如下官方文档参考学习:Ora2Pg : Migra ...

  10. Django框架——forms组件、cookie与session

    文章目录 1 forms 组件 1 校验字段功能 2 渲染标签功能 渲染方式1 渲染方式2 渲染方式3 3 渲染错误信息功能 视图 模板 4 组件的参数配置 5 局部钩子 6 全局钩子 2 cooki ...