日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...

發(fā)布時間:2023/12/4 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

18 | 日志框架:聊聊記日志的最佳姿勢

除了使用 CreateLogger 指定 logger 的名稱,實際上還可以借助容器來構(gòu)造 logger,通常情況下我們會定義自己的類

namespace LoggingSimpleDemo {public class OrderService{ILogger<OrderService> _logger;public OrderService(ILogger<OrderService> logger){_logger = logger;}public void Show(){_logger.LogInformation("Show Time{time}", DateTime.Now);}} }

接著,將 OrderService 注入到容器中

serviceCollection.AddTransient<OrderService>(); IServiceProvider service = serviceCollection.BuildServiceProvider(); var order = service.GetService<OrderService>(); order.Show();

日志級別設(shè)置為 Trace

"LoggingSimpleDemo.OrderService": "Trace"

啟動程序,輸出如下:

info: LoggingSimpleDemo.OrderService[0]Show Time03/06/2020 23:41:38

這樣做的意義是什么呢?

通常情況下并不會用 ILoggerFactory 來構(gòu)造日志記錄器,而是用強(qiáng)類型的這種依賴注入的方式來去管理我們的日志,也就是說用構(gòu)造函數(shù)將泛型的 ILogger 注入進(jìn)來的方式

這樣的方式有個好處就是我們不需要去為 logger 定義名字,它會默認(rèn)將我們類型的名稱作為記錄器的名字,命名空間加上類名 LoggingSimpleDemo.OrderService ,那也就是可以在配置文件里面設(shè)置日志級別

"LoggingSimpleDemo.OrderService": "None"

這樣子就沒有輸出

這里面有一個小技巧,需要大家特別注意,就是當(dāng)我們在記錄日志的時候,盡量使用模板的方式

_logger.LogInformation("Show Time{time}", DateTime.Now);

以下兩種方式效果相同,但是字符串拼接的時機(jī)不同

_logger.LogInformation("Show Time{time}", DateTime.Now);_logger.LogInformation($"Show Time{DateTime.Now}");

第一行代碼是在我們決定要輸出的時候,也就是在 LogInformation 內(nèi)部 console 要輸出的時候才做拼接的動作

第二行代碼是指我們在字符串拼接好以后,輸入給了 LogInformation

如果我們把日志級別關(guān)掉

"LoggingSimpleDemo.OrderService": "None"

兩行代碼都不會有輸出,但是第一行代碼字符串拼接的動作不會執(zhí)行,第二行代碼已經(jīng)執(zhí)行了,第一行代碼節(jié)省了運行資源

另外一個就是,在記錄日志的時候,不要把敏感信息記錄到日志中,記錄日志的目的是為了調(diào)試或者定位問題

總結(jié)一下

1、日志級別定義

日志級別會從嚴(yán)重程度的低到高定義,可以決定輸出的最低級別

2、日志對象獲取

可以通過 ILoggerFactory 的方式獲取日志對象,對它指定一個名字,也可以通過 ILogger 泛型的模式,從容器中獲取日志對象,最推薦的就是強(qiáng)類型的泛型模式

3、日志過濾的配置邏輯

可以針對 logger 的名稱來進(jìn)行任意的配置,日志的開關(guān)以及日志的級別

4、日志記錄的方法

LogInformation,LogDebug,還有一些小技巧,使用模板的方式記錄日志,而不是提前拼接字符串輸入給日志系統(tǒng)

5、避免記錄敏感信息,如密碼、密鑰,規(guī)避安全風(fēng)險

總結(jié)

以上是生活随笔為你收集整理的.NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。