成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在 ASP.Net Core 中使用 Serilog

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

[[380078]]

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)讀書」,作者碼農(nóng)讀書 。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)讀書公眾號。

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

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

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

安裝 Serilog

使用 Visual Studio 新建 ASP.Net Core 項目,接下來從 NuGet 上拉幾個包,具體如下:

  • Serilog

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

  • Serilog.AspNetCore

這個包提供了 Serilog 對 AspNetCore 的支持。

  • Serilog.Settings.Configuration

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

  • Serilog.Sinks.Console

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

  • Serilog.Sinks.RollingFile

實現(xiàn)了對 滾動文件 的支持。

使用 Serilog Sink

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

  1. public HomeController(ILogger<HomeController> logger) 
  2.         { 
  3.             using (var logConfig = new LoggerConfiguration().WriteTo.Console().CreateLogger()) 
  4.             { 
  5.                 logConfig.Information("This is a test data."); 
  6.             }; 
  7.  
  8.             _logger = logger; 
  9.         } 

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

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

  1. public HomeController() 
  2.         { 
  3.             var logger = new LoggerConfiguration().MinimumLevel.Debug().WriteTo 
  4.                                                   .RollingFile(@"e:\log.txt", retainedFileCountLimit: 7) 
  5.                                                   .CreateLogger(); 
  6.  
  7.             for (int i = 0; i < byte.MaxValue; i++) 
  8.             { 
  9.                 logger.Information($"log {i}"); 
  10.             } 
  11.         } 

使用 Serilog 替換原生的 Logger

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

  1. public class Program 
  2.    { 
  3.        public static void Main(string[] args) 
  4.        { 
  5.            Log.Logger = new LoggerConfiguration() 
  6.             .MinimumLevel.Debug() 
  7.             .MinimumLevel.Override("Microsoft", LogEventLevel.Information) 
  8.             .Enrich.FromLogContext() 
  9.             .WriteTo.Console() 
  10.             .CreateLogger(); 
  11.  
  12.            try 
  13.            { 
  14.                Log.Information("Starting web host"); 
  15.                CreateHostBuilder(args).Build().Run(); 
  16.            } 
  17.            catch (Exception ex) 
  18.            { 
  19.                Log.Fatal(ex, "Host terminated unexpectedly"); 
  20.            } 
  21.            finally 
  22.            { 
  23.                Log.CloseAndFlush(); 
  24.            } 
  25.        } 
  26.  
  27.        public static IHostBuilder CreateHostBuilder(string[] args) => 
  28.            Host.CreateDefaultBuilder(args) 
  29.              .UseSerilog() 
  30.                .ConfigureWebHostDefaults(webBuilder => 
  31.                { 
  32.                    webBuilder.UseStartup<Startup>(); 
  33.                }); 
  34.    } 

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

  1. public IActionResult Index() 
  2.         { 
  3.             logger.LogInformation("hello world"); 
  4.  
  5.             return View(); 
  6.         } 

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

譯文鏈接:https://www.infoworld.com/article/3314985/how-to-use-serilog-in-aspnet-core.html

責(zé)任編輯:武曉燕 來源: 碼農(nóng)讀書
相關(guān)推薦

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序

2021-02-28 20:56:37

NCache緩存框架

2021-01-07 07:39:07

工具接口 Swagger

2021-03-03 22:37:16

MediatR中介者模式

2021-01-28 22:39:35

LoggerMessa開源框架

2021-01-31 22:56:50

FromServiceASP

2021-03-17 09:45:31

LazyCacheWindows

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-02-07 17:29:04

監(jiān)視文件接口

2021-08-10 07:27:42

ASP.NETFluentd日志

2021-01-26 14:57:00

中間件應(yīng)用模塊化

2021-04-12 07:03:10

輕量級模塊化框架

2021-01-04 05:44:54

框架日志

2021-06-22 16:59:56

微軟.NETC# 軟件開發(fā)

2017-10-20 08:52:11

內(nèi)存緩存并發(fā)模式Linux

2022-08-01 08:00:00

開發(fā)工具跟蹤偵聽器

2009-02-05 14:02:46

SmtpMail發(fā)送郵件ASP.NET

2021-04-14 07:35:12

Json格式化日期

2009-03-30 10:34:03

ASP.NETMySQL
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费看黄视频网站 | 国产精品亚洲精品日韩已方 | 在线一区 | 精品一区视频 | 久久久久成人精品免费播放动漫 | 欧美久久一区二区 | 国产一区二区三区免费观看在线 | 欧美国产一区二区 | 夜夜爽99久久国产综合精品女不卡 | 黄色欧美 | 中文字幕在线免费观看 | 久久久久久久久精 | 欧美日韩一区二区三区四区 | 亚洲成人久久久 | 国产伦精品一区二区 | 成年人在线视频 | 久久国产精品99久久久久久丝袜 | 亚洲国产精品久久久 | 欧美男人天堂 | 国产精品免费小视频 | h视频在线看 | 精品免费视频 | 一区二区三区视频在线观看 | 色视频在线观看 | 91麻豆精品一区二区三区 | 日本a在线 | 精品日韩在线 | 久久精品中文字幕 | 毛片免费视频 | 中文字幕一级 | 免费在线观看一区二区 | 国产成人精品一区二 | 日韩在线精品 | 久草在线 | 免费观看一级特黄欧美大片 | 国产精品久久在线 | 成人午夜精品一区二区三区 | 国产成人啪免费观看软件 | 日本精品一区二区三区在线观看视频 | 麻豆精品国产91久久久久久 | 亚洲免费一 |