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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

asp.net

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

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

18 | 日志框架:聊聊記日志的最佳姿勢(shì)

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

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();

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

"LoggingSimpleDemo.OrderService": "Trace"

啟動(dòng)程序,輸出如下:

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

這樣做的意義是什么呢?

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

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

"LoggingSimpleDemo.OrderService": "None"

這樣子就沒(méi)有輸出

這里面有一個(gè)小技巧,需要大家特別注意,就是當(dāng)我們?cè)谟涗浫罩镜臅r(shí)候,盡量使用模板的方式

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

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

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

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

第二行代碼是指我們?cè)谧址唇雍靡院?#xff0c;輸入給了 LogInformation

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

"LoggingSimpleDemo.OrderService": "None"

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

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

總結(jié)一下

1、日志級(jí)別定義

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

2、日志對(duì)象獲取

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

3、日志過(guò)濾的配置邏輯

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

4、日志記錄的方法

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

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

總結(jié)

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

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