首頁 > 軟體

.net新興紀錄檔框架Serilog簡介

2022-07-01 14:00:49

Serilog是.net下的新興的紀錄檔框架,本文這裡簡單的介紹一下它的用法。

首先安裝Nuget包:

Install-Package Serilog
Install-Package Serilog.Sinks.Console

其中包Serilog是Log核心庫,Serilog.Sinks.Console是Log的控制檯輸出庫,這個也是紀錄檔框架的一貫策略,一個核心庫加多個輸出庫組合使用,這樣可以保持良好的擴充套件性。

簡單的範例:

using (var log = new LoggerConfiguration()
                .WriteTo.Console()
                .CreateLogger())
{
    log.Information("Hello, Serilog!");
    log.Warning("Goodbye, Serilog.");
}

輸出結果如下:

LoggerConfiguration

這裡用了一個LoggerConfiguration物件,它主要用於建立和設定Log物件,類似於Nlog裡面的LogManager類。這裡主要用它兩個方法:

  • WriteTo:WriteTo屬性用來設定紀錄檔的輸出,Serilog將其稱為Sink(水槽),還是比較形象的。
  • CreateLogger:用於建立一個ILogger型別的Logger物件.

ILogger

ILogger物件用於記錄紀錄檔,和其他紀錄檔框架差不多。Serilog紀錄檔級別分為如下5級

  • Verbose,
  • Debug,
  • Information,
  • Warning,
  • Error,
  • Fatal,

大多數的紀錄檔也是這樣5級,只是有的名稱叫的不同(NLog第1級叫Trace,其它的一致),每一級別對應一個寫Log的函數:

log.Verbose("verbose");
log.Information("info");
log.Debug("debug");
log.Warning("warning");
log.Error("err");
log.Fatal("fatal");

另外,ILogger物件還有一個Dispose方法,用於關閉紀錄檔物件。

全域性Logger物件

在實際的使用過程中,往往並不是每次使用都去建立一個ILogger,一種方式是通過依賴注入的方式建立一個全域性的Logger。不過這種方式需要引入DI框架。在小程式中使用不算方便。

另一種方式是直接使用靜態的Log類,它也攜帶了寫入紀錄檔的方法,用起來非常方便。

Log.Warning("warning");
Log.Error("err");
Log.Fatal("fatal");

不過Log類之前,首先必須給它關聯一個ILogger。

Log.Logger = new LoggerConfiguration()
            .WriteTo.Console()
            .CreateLogger();

接收器

Serilog的輸出物件稱之為Sink(水槽),github上提供了大量的第三方的可用sinks,這裡簡單的列舉幾個常用的:

  • Console        輸出到控制檯
  • Debug        輸出到VS的Debug視窗
  • File            輸出到檔案
  • Rolling File    
  • MongoDB    輸出到MongoDB
  • LiteDB        輸出到檔案資料庫LiteDB
  • SQLite         輸出到檔案資料庫SQLite
  • SignalR        輸出為SignalR服務
  • HTTP        輸出到REST服務

輸出格式設定

Serilog的紀錄檔輸出通過LoggerConfiguration類設定,詳細的設定引數可以參看官方檔案:Configuration Basics。在日常使用中,感覺更多的是直接通過LoggerConfiguration在程式碼中設定。

到此這篇關於.net紀錄檔框架Serilog的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com