最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在ASP.Net Core中使用Serilog

 更新時(shí)間:2021年04月02日 11:44:57   作者:碼農(nóng)讀書(shū)  
這篇文章主要介紹了如何在ASP.Net Core中使用Serilog,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下

記錄日志的一個(gè)作用就是方便對(duì)應(yīng)用程序進(jìn)行跟蹤和排錯(cuò)調(diào)查,在實(shí)際應(yīng)用上都是引入 日志框架,但如果你的 日志文件 包含非結(jié)構(gòu)化的數(shù)據(jù),那么查詢(xún)起來(lái)將是一個(gè)噩夢(mèng),所以需要在記錄日志的時(shí)候采用結(jié)構(gòu)化方式。

將日志結(jié)構(gòu)化可以更容易的查詢(xún)和分析,做法就是在寫(xiě)入的時(shí)候定義好數(shù)據(jù)的格式,這種格式包括:xml,json,或者你希望轉(zhuǎn)成的任何結(jié)構(gòu)。

Serilog 是一個(gè)第三方,開(kāi)源的結(jié)構(gòu)化日志框架,它的高層封裝可以讓開(kāi)發(fā)者更容易的將日志記錄到 console,file 和你能想到的各種 存儲(chǔ)系統(tǒng),這篇文章我們將會(huì)討論如何在 ASP.Net Core 中使用 Serilog。

安裝 Serilog

使用 Visual Studio 新建 ASP.Net Core 項(xiàng)目,接下來(lái)從 NuGet 上拉幾個(gè)包,具體如下:

  • Serilog

這個(gè)包提供了對(duì)基本的結(jié)構(gòu)化日志的功能支持。

  • Serilog.AspNetCore

這個(gè)包提供了 Serilog 對(duì) AspNetCore 的支持。

  • Serilog.Settings.Configuration

這個(gè)包打通了 Serilog 和 Configuration ,這樣你就可以直接從 appsettings.json 中讀取配置。

  • Serilog.Sinks.Console

Console接收器顧名思義就是將 Serilog 的日志輸出到 Console。

  • Serilog.Sinks.RollingFile

實(shí)現(xiàn)了對(duì) 滾動(dòng)文件 的支持。

使用 Serilog Sink

Serilog 利用 sink 特性將日志送到不同的地方,比如:text文件,數(shù)據(jù)庫(kù),甚至是 ElasticSearch 中,換句話說(shuō),sink 特性可以把日志送到它該去的地方,當(dāng)所有的 nuget 包都安裝好了之后,下面的代碼片段展示了如何將日志送到 console 中。

        public HomeController(ILogger<HomeController> logger)
        {
            using (var logConfig = new LoggerConfiguration().WriteTo.Console().CreateLogger())
            {
                logConfig.Information("This is a test data.");
            };

            _logger = logger;
        }

值得注意的是,Serilog 支持多個(gè)日志級(jí)別,如:verbose, debug, information, warning, error 和 fatal。

有時(shí)候?yàn)榱苏{(diào)試目的,將日志送到 Console 是一個(gè)好辦法,但將程序部署到生產(chǎn)之后,更通用的做法就是將日志記錄到文件中,這樣方便在生產(chǎn)上實(shí)時(shí)查看并做一定程度的日志分析,剛好這里的 Serilog.Sink.RollingFile 支持對(duì)滾動(dòng)文件的支持,下面的代碼片段展示了如何通過(guò)編程的方式將日志送到文件中。

        public HomeController()
        {
            var logger = new LoggerConfiguration().MinimumLevel.Debug().WriteTo
                                                  .RollingFile(@"e:\log.txt", retainedFileCountLimit: 7)
                                                  .CreateLogger();

            for (int i = 0; i < byte.MaxValue; i++)
            {
                logger.Information($"log {i}");
            }
        }

使用 Serilog 替換原生的 Logger

在 ASP.NET Core 中內(nèi)置了 Logger 組件,這一節(jié)中我們一起看看如何使用 Serilog 將其進(jìn)行替換,在 Program.Main 方法中使用如下代碼:

    public class Program
    {
        public static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
             .MinimumLevel.Debug()
             .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
             .Enrich.FromLogContext()
             .WriteTo.Console()
             .CreateLogger();

            try
            {
                Log.Information("Starting web host");
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
              .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

從上面的代碼中可以看到,我在 CreateHostBuilder 中使用了 UseSerilog() 擴(kuò)展方法來(lái)啟動(dòng) Serilog,這樣就做好了 Serilog 的替換工作,接下來(lái)可以在 Controller 中通過(guò)依賴(lài)注入的方式獲取 logger 實(shí)例,如下代碼所示:

        public IActionResult Index()
        {
            logger.LogInformation("hello world");

            return View();
        }

日志是一個(gè)應(yīng)用程序不可或缺的一部分,所以選擇一款 靈活 + 簡(jiǎn)單 的日志框架就顯得特別重要了,Serilog 提供了低配置和易使用的特性讓我們方便的將日志送到各個(gè)地方。

以上就是如何在ASP.Net Core中使用Serilog的詳細(xì)內(nèi)容,更多關(guān)于ASP.Net Core 中使用 Serilog的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

遂宁市| 海宁市| 内江市| 鄂托克旗| 汤阴县| 霸州市| 寿光市| 乌拉特中旗| 萨迦县| 舒兰市| 莫力| 电白县| 大英县| 洛南县| 怀化市| 治多县| 万荣县| 尉氏县| 房山区| 九江县| 吉安县| 郑州市| 甘孜县| 呈贡县| 五寨县| 淮安市| 夏津县| 宜宾市| 溧水县| 皋兰县| 新田县| 静海县| 读书| 沁阳市| 湖南省| 肇庆市| 叙永县| 茂名市| 资溪县| 海城市| 卓资县|