不要用第三方日志包了Microsoft.Extensions.Logging功能就很强大
在.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功能就很强大的更多相关文章
- Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例
本文目录 1. Net下日志记录 2. NLog的使用 2.1 添加nuget引用NLog.Web.AspNetCore 2.2 配置文件设置 2.3 依赖配置及调用 ...
- asp.net core 2.0 Microsoft.Extensions.Logging 文本文件日志扩展
asp.net core微软官方为日志提供了原生支持,有如下实现 Console Debug EventLog AzureAppServices TraceSource EventSource 并且在 ...
- microsoft.extensions.logging日志组件拓展(保存文本文件)
Microsoft.Extensions.Logging 日志组件拓展 文件文本日志 文件文本日志UI插件 自定义介质日志 Microsoft.Extensions.Logging.File文件文本日 ...
- 将日志(Microsoft.Extensions.Logging)添加到.NET Core控制台应用程序
在.NET Core项目中,日志记录是通过依赖项注入进行管理的. 尽管这对于ASP.NET项目效果很好,但在启动Startup.cs中的新项目时,所有这些都会自动创建,而在控制台应用程序中则需要一些配 ...
- 微软日志工厂 Microsoft.Extensions.Logging 中增加 log4net 的日志输出
前提: 需要nuget Microsoft.Extensions.Logging.Log4Net.AspNetCore 2.2.6: 描述:解决 .net core 微软日志工厂 Micros ...
- 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 ...
- 检测到包降级: Microsoft.Extensions.Configuration.Abstractions 从 2.1.1 降 2.1.0
解决方法:工具-nuget管理包-程序管理控制台-选择 项目- 执行 -Install-Package Microsoft.Extensions.Configuration.Abstractions ...
- golang第三方日志包seelog配置文件详解
开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提.在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一.seelog主要功能下面我 ...
- 乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 官方扩展集锦(Microsoft.Extensions on Nuget)
什么是Microsoft.Extensions .NET Platform Extensions是一套.Net官方的API集合,提供了一些常用的编程模式和实用工具,例如依赖项注入.日志记录.缓存.Ho ...
- Go中的日志及第三方日志包logrus
有别的语言使用基础的同学工作中都会接触到日志的使用,Go中自然也有log相关的实现.Go log模块主要提供了3类接口,分别是 "Print .Panic .Fatal ",对每一 ...
随机推荐
- 利用RATF框架实现web状态的监控
之前,我们已经说明了如何实现一个我们的接口测试框架RATF,当然这个框架不止可以用于管理我们的接口测试代码,我们还可以用他来对我们的web进行简单粗暴的监控. 原理: 1. 通过使用配置文件,对要监控 ...
- Redis沙盒逃逸(CVE-2022-0543)漏洞复现
0x01 概述 Redis 是著名的开源 Key-Value 数据库,其具备在沙箱中执行 Lua 脚本的能力.Debian 以及 Ubuntu 发行版的源在打包 Redis 时,在 Lua 沙箱中遗留 ...
- 2023年Vue开发中的8个最佳工具
前言 Vue.js,一款当今非常流行的基于JavaScript的开源框架,旨在构建动态的可交互应用. Vue.js以其直观的语法和灵活的架构而广受全球开发者的欢迎和赞誉.随着时间的推移,Vue不断进化 ...
- Note -「Polynomial」
Part. 1 FFT Part. 1-1 Main 对于一个 \(n\) 次多项式 \(F(x)=\sum_{i=0}^{n}a_{i}x^{i}\),在平面直角坐标系中可以由 \(n+1\) 个点 ...
- Vue3搭建后台管理系统模板
搭建后台管理系统模板 2.1项目初始化 今天来带大家从0开始搭建一个vue3版本的后台管理系统.一个项目要有统一的规范,需要使用eslint+stylelint+prettier来对我们的代码质量做检 ...
- mysql8安装踩坑记
背景:已安装mysql5.7版本 问题一:默认的3306端口被占用 进入mysql5.7的my.ini文件,更改port为3307或者其他未被占用的端口 问题二:Install/Remove of t ...
- Modbus动态链接库供多语言使用 | Go
Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...
- MySQL系列之备份恢复——运维在备份恢复方面、备份类型、备份方式及工具、逻辑备份和物理备份、备份策略、备份工具使用-mysqldump、企业故障恢复案例、备份时优化参数、MySQL物理备份工具
文章目录 1. 运维在数据库备份恢复方面的职责 1.1 设计备份策略 1.2 日常备份检查 1.3 定期恢复演练(测试库) 1.4 故障恢复 1.5 迁移 2. 备份类型 2.1 热备 2.2 温备 ...
- 普冉PY32系列(八) GPIO模拟和硬件SPI方式驱动无线收发芯片XN297LBW
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...
- 当scroll-view水平滚动,内容溢出时,文本会自动竖向排列问题
当scroll-view水平滚动,内容溢出时,文本会自动竖向排列 解决方法:thite-space:nowrap:规定段落中的文本不进行换行