.NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记
2.2.2 核心模块--日志
ILogger 的使用
日志的 ID
日志的分类
日志的级别
LoggerProvider
日志的最佳实践
.NET Core 和 ASP.NET Core 中的日志记录:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0
ILogger 的使用
在 Get 方法中添加日志
WeatherForecastController.cs
private readonly ILogger<WeatherForecastController> _logger;public WeatherForecastController(ILogger<WeatherForecastController> logger)
{_logger = logger;
}_logger.LogInformation("Get action executed");
日志的 ID
_logger.LogInformation(new EventId(1001, "Action"), "Get action executed");
日志的分类
根据不同的类名区分
private readonly ILogger<WeatherForecastController> _logger;
private readonly ILogger _myLogger;public WeatherForecastController(ILogger<WeatherForecastController> logger, ILoggerFactory loggerFactory)
{_logger = loggerFactory.CreateLogger<WeatherForecastController>();_myLogger = loggerFactory.CreateLogger("MyLogger");// 通过自己的分类 MyLogger 创建
}
日志的级别
LogLevel | Value | Method | Description | 推荐使用场景 |
---|---|---|---|---|
Trace | 0 | LogTrace | 跟踪日志:粒度细,非常详细跟踪日志,包括方法的进入结束。一般是用于sdk、或者一些基础设施上 | 开发环境/特殊环境 |
Debug | 1 | LogDebug | 调试日志:记录一些比较容易出错的一些跟踪信息 | 开发环境/特殊环境 |
Information | 2 | LogInformation | 信息:生产级别开启。相对来说比较重要的节点:比如订单支付成功、取消成功 | 生产 |
Warning | 3 | LogWarning | 警告:有一定错误,但不影响结果执行 | 生产 |
Error | 4 | LogError | 错误:导致程序不能正常往下执行业务的错误 | 生产 |
Critical | 5 | LogCritical | 致命:记录信息要求,系统崩溃 | 生产 |
None | 6 |
LoggerProvider
源码:https://github.com/aspnet/Logging/tree/master/src/
ILoggerProvider.cs
using System;namespace Microsoft.Extensions.Logging
{/// <summary>/// Represents a type that can create instances of <see cref="ILogger"/>./// </summary>public interface ILoggerProvider : IDisposable{/// <summary>/// Creates a new <see cref="ILogger"/> instance./// </summary>/// <param name="categoryName">The category name for messages produced by the logger.</param>/// <returns></returns>ILogger CreateLogger(string categoryName);}
}
日志的设计模式
支持不同类型的日志输出,可以自定义一个 LoggerProvider
打印容器中所有注入的 LoggerProvider
Program.cs
var providers = host.Services.GetServices<ILoggerProvider>();// 获取容器中所有注入的实例
foreach (var provider in providers)
{Console.WriteLine(provider.GetType().ToString());
}
启动程序,输出如下:
Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider
Microsoft.Extensions.Logging.Debug.DebugLoggerProvider
Microsoft.Extensions.Logging.EventSource.EventSourceLoggerProvider
Microsoft.Extensions.Logging.EventLog.EventLogLoggerProvider
添加,清除
public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureLogging((ctx, logger) =>{//logger.AddProvider();// 添加logger.ClearProviders();// 清除})
日志的最佳实践
先注释清除代码
//.ConfigureLogging((ctx, logger) =>
//{
// //logger.AddProvider();// 添加
// logger.ClearProviders();// 清除
//})
在 appsettings.json 调整日志级别为 Trace
{"Logging": {"LogLevel": {"Default": "Trace","Microsoft": "Trace","Microsoft.Hosting.Lifetime": "Trace"}}
}
在 WeatherForecastController 中添加一个方法,根据需求使用日志
public IActionResult CreateOrder(dynamic order)
{_logger.LogTrace("Enter CreateOrder method");_logger.LogDebug("Start creating order: {0}", "order info");_logger.LogTrace("Start executing _orderService.Create method");if (order.amount <= 0){_logger.LogWarning("Order Amount is:{0}");}_orderService.Create(order);_logger.LogTrace("Completed executing _orderService.Crete method");_logger.LogTrace("Leave CreateOrder Successfully");_logger.LogInformation("Leave CreateOrder Successfully");return Ok();
}
GitHub源码链接:
https://github.com/MINGSON666/Personal-Learning-Library/tree/main/ArchitectTrainingCamp/HelloApi
课程链接
.NET云原生架构师训练营讲什么,怎么讲,讲多久
欢迎各位读者加入微信群一起学习交流,
在公众号后台回复“加群”即可~~
.NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记相关推荐
- .NET 云原生架构师训练营(设计原则设计模式)--学习笔记
▲ 点击上方"DotNet NB"关注公众号 回复"1"获取开发者路线图 学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第180篇原创文章 ...
- .NET 云原生架构师训练营(模块二 基础巩固 配置)--学习笔记
2.2.3 核心模块--配置 IConfiguration Options ASP.NET Core 中的配置:https://docs.microsoft.com/zh-cn/aspnet/core ...
- .NET 云原生架构师训练营(模块二 基础巩固 依赖注入)--学习笔记
2.2.1 核心模块--依赖注入 什么是依赖注入 .NET Core DI 生命周期 服务设计 服务范围检查 ASP.NET Core 依赖注入:https://docs.microsoft.com/ ...
- .NET 云原生架构师训练营(模块二 基础巩固 安全)--学习笔记
2.8 安全 认证 VS 授权 ASP .NET Core 认证授权中间件 认证 JWT 认证 授权 认证 VS 授权 认证是一个识别用户是谁的过程 授权是一个决定用户可以干什么的过程 401 Una ...
- .NET 云原生架构师训练营(模块二 基础巩固 REST RESTful)--学习笔记
2.3.1 Web API -- REST && RESTful 什么是 REST,什么是 RESTful RESTful API 设计 RESTful 成熟度模型 什么是 REST, ...
- .NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记
2.1 引入 http协议 web server && web application framework .net 与 .net core asp .net core web api ...
- .NET 云原生架构师训练营(系统架构)--学习笔记
▲ 点击上方"DotNet NB"关注公众号 回复"1"获取开发者路线图 学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第176篇原创文章 ...
- ef 多个左联接查询_.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记...
2.4.5 EF Core -- 查询 关联数据加载 客户端与服务端运算 跟踪与不跟踪 复杂查询运算 原生 SQL 查询 全局查询筛选器 关联数据加载 学员和助教都在项目分组中,调整模型,删除 Ass ...
- .NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记
2.4.5 EF Core -- 查询 关联数据加载 客户端与服务端运算 跟踪与不跟踪 复杂查询运算 原生 SQL 查询 全局查询筛选器 关联数据加载 学员和助教都在项目分组中,调整模型,删除 Ass ...
最新文章
- 重磅!Google推出了Python最牛X的编辑器......
- 请求令牌 接口_时序图说明JWT用户认证及接口鉴权的细节
- excel函数SUMPRODUCT
- 使用.Net6中的System.Text.Json遇到几个常见问题及解决方案
- 前端学习(3219):对props进行限制
- python怎么变成exe_Python怎样打包成exe?
- python Exception(异常处理)
- 信息学奥赛一本通(2033:【例4.19】阶乘之和)
- JZOJ 1235. 洪水
- 破世界纪录了0.74秒!用代码实现自动扫雷!
- python模块规定的格式,按照这样写,最规范
- linux小红帽镜像系统,红帽 Red Hat Linux 系统镜像iso下载(汇总.百度云)
- 汉诺塔移动次数递归算法c语言,谁知道C语言汉诺塔递归算法及其详细注释?
- AB测试平台的工程实现
- 电路方案分析(十三)采用 CAN 的汽车分立式 SBC 预升压、后降压参考设计方案
- 图片转为PDF怎么弄
- 手机wifi的mac地址是什么??
- Auto.js实现自动删除朋友圈照片
- 2022-2028年中国危化品运输行业市场深度分析及投资规模预测报告
- layui 动态表格 合并单元格