<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET 云原生架構(gòu)師訓(xùn)練營(模塊二 基礎(chǔ)鞏固 日志)--學(xué)習(xí)筆記

          共 2951字,需瀏覽 6分鐘

           ·

          2020-12-18 12:53

          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 _logger;

          public WeatherForecastController(ILogger logger)
          {
          _logger = logger;
          }

          _logger.LogInformation("Get action executed");

          日志的 ID

          _logger.LogInformation(new EventId(1001, "Action"), "Get action executed");

          日志的分類

          根據(jù)不同的類名區(qū)分

          private readonly ILogger _logger;
          private readonly ILogger _myLogger;

          public WeatherForecastController(ILogger logger, ILoggerFactory loggerFactory)
          {
          _logger = loggerFactory.CreateLogger();
          _myLogger = loggerFactory.CreateLogger("MyLogger");// 通過自己的分類 MyLogger 創(chuàng)建
          }

          日志的級別

          LogLevelValueMethodDescription推薦使用場景
          Trace0LogTrace跟蹤日志:粒度細(xì),非常詳細(xì)跟蹤日志,包括方法的進(jìn)入結(jié)束。一般是用于sdk、或者一些基礎(chǔ)設(shè)施上開發(fā)環(huán)境/特殊環(huán)境
          Debug1LogDebug調(diào)試日志:記錄一些比較容易出錯的一些跟蹤信息開發(fā)環(huán)境/特殊環(huán)境
          Information2LogInformation信息:生產(chǎn)級別開啟。相對來說比較重要的節(jié)點:比如訂單支付成功、取消成功生產(chǎn)
          Warning3LogWarning警告:有一定錯誤,但不影響結(jié)果執(zhí)行生產(chǎn)
          Error4LogError錯誤:導(dǎo)致程序不能正常往下執(zhí)行業(yè)務(wù)的錯誤生產(chǎn)
          Critical5LogCritical致命:記錄信息要求,系統(tǒng)崩潰生產(chǎn)
          None6


          LoggerProvider

          源碼:https://github.com/aspnet/Logging/tree/master/src/

          ILoggerProvider.cs

          using System;

          namespace Microsoft.Extensions.Logging
          {
          ///
          /// Represents a type that can create instances of .
          ///

          public interface ILoggerProvider : IDisposable
          {
          ///
          /// Creates a new instance.
          ///

          /// The category name for messages produced by the logger.
          ///
          ILogger CreateLogger(string categoryName);
          }
          }

          日志的設(shè)計模式

          支持不同類型的日志輸出,可以自定義一個 LoggerProvider

          打印容器中所有注入的 LoggerProvider

          Program.cs

          var providers = host.Services.GetServices();// 獲取容器中所有注入的實例
          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 調(diào)整日志級別為 Trace

          {
          "Logging": {
          "LogLevel": {
          "Default": "Trace",
          "Microsoft": "Trace",
          "Microsoft.Hosting.Lifetime": "Trace"
          }
          }
          }

          在 WeatherForecastController 中添加一個方法,根據(jù)需求使用日志

          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云原生架構(gòu)師訓(xùn)練營講什么,怎么講,講多久


          歡迎各位讀者加入微信群一起學(xué)習(xí)交流,
          在公眾號后臺回復(fù)“加群”即可~~


          瀏覽 114
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本xxxxx视频 | 爱99区区 | 国产高清无码视频在线观看 | 日本在线影院 | 国产精品久久久久久久久久久久久久久久 |