1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2951字,需瀏覽 6分鐘

         ·

        2020-12-18 12:53

        2.2.2 核心模塊--日志

        • ILogger 的使用

        • 日志的 ID

        • 日志的分類

        • 日志的級別

        • LoggerProvider

        • 日志的最佳實(shí)踐

        .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é)點(diǎn):比如訂單支付成功、取消成功生產(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è)計(jì)模式

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

        打印容器中所有注入的 LoggerProvider

        Program.cs

        var providers = host.Services.GetServices();// 獲取容器中所有注入的實(shí)例
        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();// 清除
        })

        日志的最佳實(shí)踐

        先注釋清除代碼

        //.ConfigureLogging((ctx, logger) =>
        //{
        // //logger.AddProvider();// 添加
        // logger.ClearProviders();// 清除
        //})

        在 appsettings.json 調(diào)整日志級別為 Trace

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

        在 WeatherForecastController 中添加一個(gè)方法,根據(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
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费国产羞羞网站视频 | 一级伊人 | 三级网站在线观看视频 | 91免费版污 | 美女扒开裤子让男人桶 | 国产精品人妻AⅤ在线看 | 日韩逼网 | 免费的草逼网 | 偷窥视频 | 做爱在线观看免费观看高清 |