1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    如何在ASP.Net Core中使用Serilog_實用技巧

    來源:腳本之家  責任編輯:小易  

    記錄日志的一個作用就是方便對應用程序進行跟蹤和排錯調查,在實際應用上都是引入 日志框架,但如果你的 日志文件 包含非結構化的數據,那么查詢起來將是一個噩夢,所以需要在記錄日志的時候采用結構化方式。

    將日志結構化可以更容易的查詢和分析,做法就是在寫入的時候定義好數據的格式,這種格式包括:xml,json,或者你希望轉成的任何結構。

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

    安裝 Serilog

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

    Serilog

    這個包提供了對基本的結構化日志的功能支持。

    Serilog.AspNetCore

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

    Serilog.Settings.Configuration

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

    Serilog.Sinks.Console

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

    Serilog.Sinks.RollingFile

    實現了對 滾動文件 的支持。

    使用 Serilog Sink

    Serilog 利用 sink 特性將日志送到不同的地方,比如:text文件,數據庫,甚至是 ElasticSearch 中,換句話說,sink 特性可以把日志送到它該去的地方,當所有的 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 支持多個日志級別,如:verbose, debug, information, warning, error 和 fatal。

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

            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 中內置了 Logger 組件,這一節中我們一起看看如何使用 Serilog 將其進行替換,在 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() 擴展方法來啟動 Serilog,這樣就做好了 Serilog 的替換工作,接下來可以在 Controller 中通過依賴注入的方式獲取 logger 實例,如下代碼所示:

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

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

    以上就是如何在ASP.Net Core中使用Serilog的詳細內容,更多關于ASP.Net Core 中使用 Serilog的資料請關注真格學網其它相關文章!

    您可能感興趣的文章:ASP.NET Core 5中如何生成PDF文檔ASP.NET Core中使用LazyCache的全過程ASP.NET Core擴展庫之實體映射使用詳解詳解如何在ASP.Net Core中實現健康檢查在ASP.Net Core中使用Lamar的全過程ASP.NET Core Api網關Ocelot的使用初探ASP.NET Core擴展庫之日志功能的使用詳解ASP.NET Core擴展庫的相關功能介紹在ASP.NET Core中用HttpClient發送POST, PUT和DELETE請求在ASP.NET Core中應用HttpClient獲取數據和內容如何在Asp.Net Core中集成Refit

  3. 本文相關:
  4. .net c# gif動畫如何添加圖片水印實現思路及代碼
  5. .net從優酷專輯中采集所有視頻及信息(vb.net代碼)
  6. asp.net過濾html字符串方法總結
  7. asp.net實現服務器文件下載到本地的方法
  8. hangfire在asp.net core中的簡單實現方法
  9. asp.net下檢測sql注入式攻擊代碼
  10. asp.net mvc學習筆記
  11. asp.net mvc學習總結之過濾器詳解
  12. asp.net+ligerui實現grid導出excel和word的方法
  13. asp.net(c#) rss功能實現代碼
  14. Asp.netCore怎么啟停本地服務
  15. 如何在.net core中使用ef
  16. 如何在ASP NET Core中實現CORS跨域
  17. 如何在ASP.net中調用webservice里的一個方法
  18. 如何用在ASP.NET中寫入事件日志
  19. ASP.NET Core中如何對靜態文件進行授權
  20. 如何在asp.net中用response實現頁面跳轉功能
  21. 請問:ASP.net mvc5和asp.net.core有什么區別呢?在...
  22. microsoft.aspnetcore.http 在哪個dll中
  23. ASP.net core是什么?
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全基礎應用實用技巧自學過程首頁asp.netasp.net core 5中如何生成pdf文檔asp.net core中使用lazycache的全過程asp.net core擴展庫之實體映射使用詳解詳解如何在asp.net core中實現健康檢查在asp.net core中使用lamar的全過程asp.net core api網關ocelot的使用初探asp.net core擴展庫之日志功能的使用詳解asp.net core擴展庫的相關功能介紹在asp.net core中用httpclient發送post, put和delete請求在asp.net core中應用httpclient獲取數據和內容如何在asp.net core中集成refit.net c# gif動畫如何添加圖片水印實現思路及代碼.net從優酷專輯中采集所有視頻及信息(vb.net代碼)asp.net過濾html字符串方法總結asp.net實現服務器文件下載到本地的方法hangfire在asp.net core中的簡單實現方法asp.net下檢測sql注入式攻擊代碼asp.net mvc學習筆記asp.net mvc學習總結之過濾器詳解asp.net+ligerui實現grid導出excel和word的方法asp.net(c#) rss功能實現代碼未將對象引用設置到對象的實例 (java正則表達式 pattern和matcheasp.net(c#)網頁跳轉七種方法小結未能加載文件或程序集“xxx”或它asp.net“服務器應用程序不可用”asp.net中的幾種彈出框提示基本實asp.net gridview 72般絕技asp.net生成excel并導出下載五種asp.net對路徑"xxxxx"asp.net漢字轉拼音和獲取漢字首字asp.net core中如何利用csp標頭對抗xss攻使用customvalidator自定義驗證控件檢查是asp.net清空控件值的方法(可自定義控件類.net winfrom中給文本框添加拖放事件的代.net發布網站詳細步驟asp.net下用js實現鼠標移至小圖,自動顯示asp.net性能優化之減少請求asp.net sqlhelper數據訪問層的使用asp.net實現md5加密.net c#生成縮略圖實現思路分解
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载