.net新興日志框架Serilog簡(jiǎn)介
Serilog是.net下的新興的日志框架,本文這里簡(jiǎn)單的介紹一下它的用法。
首先安裝Nuget包:
Install-Package Serilog Install-Package Serilog.Sinks.Console
其中包Serilog是Log核心庫,Serilog.Sinks.Console是Log的控制臺(tái)輸出庫,這個(gè)也是日志框架的一貫策略,一個(gè)核心庫加多個(gè)輸出庫組合使用,這樣可以保持良好的擴(kuò)展性。
簡(jiǎn)單的示例:
using (var log = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger())
{
log.Information("Hello, Serilog!");
log.Warning("Goodbye, Serilog.");
}輸出結(jié)果如下:

LoggerConfiguration
這里用了一個(gè)LoggerConfiguration對(duì)象,它主要用于創(chuàng)建和設(shè)置Log對(duì)象,類似于Nlog里面的LogManager類。這里主要用它兩個(gè)方法:
- WriteTo:WriteTo屬性用來設(shè)置日志的輸出,Serilog將其稱為Sink(水槽),還是比較形象的。
- CreateLogger:用于創(chuàng)建一個(gè)ILogger類型的Logger對(duì)象.
ILogger
ILogger對(duì)象用于記錄日志,和其他日志框架差不多。Serilog日志級(jí)別分為如下5級(jí)
- Verbose,
- Debug,
- Information,
- Warning,
- Error,
- Fatal,
大多數(shù)的日志也是這樣5級(jí),只是有的名稱叫的不同(NLog第1級(jí)叫Trace,其它的一致),每一級(jí)別對(duì)應(yīng)一個(gè)寫Log的函數(shù):
log.Verbose("verbose");
log.Information("info");
log.Debug("debug");
log.Warning("warning");
log.Error("err");
log.Fatal("fatal");另外,ILogger對(duì)象還有一個(gè)Dispose方法,用于關(guān)閉日志對(duì)象。
全局Logger對(duì)象
在實(shí)際的使用過程中,往往并不是每次使用都去創(chuàng)建一個(gè)ILogger,一種方式是通過依賴注入的方式創(chuàng)建一個(gè)全局的Logger。不過這種方式需要引入DI框架。在小程序中使用不算方便。
另一種方式是直接使用靜態(tài)的Log類,它也攜帶了寫入日志的方法,用起來非常方便。
Log.Warning("warning");
Log.Error("err");
Log.Fatal("fatal");不過Log類之前,首先必須給它關(guān)聯(lián)一個(gè)ILogger。
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();接收器
Serilog的輸出對(duì)象稱之為Sink(水槽),github上提供了大量的第三方的可用sinks,這里簡(jiǎn)單的列舉幾個(gè)常用的:
- Console 輸出到控制臺(tái)
- Debug 輸出到VS的Debug窗口
- File 輸出到文件
- Rolling File
- MongoDB 輸出到MongoDB
- LiteDB 輸出到文件數(shù)據(jù)庫LiteDB
- SQLite 輸出到文件數(shù)據(jù)庫SQLite
- SignalR 輸出為SignalR服務(wù)
- HTTP 輸出到REST服務(wù)
輸出格式配置
Serilog的日志輸出通過LoggerConfiguration類配置,詳細(xì)的配置參數(shù)可以參看官方文檔:Configuration Basics。在日常使用中,感覺更多的是直接通過LoggerConfiguration在代碼中配置。
到此這篇關(guān)于.net日志框架Serilog的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
近幾天對(duì)DataSet的新認(rèn)識(shí)
近幾天對(duì)DataSet的新認(rèn)識(shí)...2007-04-04
System.Runtime.InteropServices.COMException的解決方法
完美解決“換另一臺(tái)電腦上用VS2008繼續(xù)開發(fā)web項(xiàng)目時(shí)出現(xiàn)“System.Runtime.InteropServices.COMException”,然后是加載不了項(xiàng)目。”2009-03-03
發(fā)布asp.net core時(shí)如何修改ASPNETCORE_ENVIRONMENT環(huán)境變量
這篇文章主要介紹了發(fā)布asp.net core時(shí)如何修改ASPNETCORE_ENVIRONMENT環(huán)境變量,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
區(qū)分ASP.NET中g(shù)et方法和post方法
我們都知道,get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器上傳數(shù)據(jù)。本文主要介紹ASP.NET中g(shù)et方法和post方法的區(qū)別,需要的朋友可以參考下2015-10-10
ASP.NET(C#) 定時(shí)執(zhí)行一段代碼
在Global.asax啟動(dòng)一條線程就ok了,下面是啟動(dòng)線程定時(shí)寫文件的例子.2009-11-11
c#實(shí)現(xiàn)根據(jù)網(wǎng)絡(luò)IP顯示地理位置功能示例
通常都會(huì)有類似 注冊(cè)IP和最后登錄IP這兩個(gè)的字段來存儲(chǔ)用戶注冊(cè)時(shí)候的IP地址和最后登錄的IP的地址,現(xiàn)在我們就簡(jiǎn)單的實(shí)現(xiàn)一下如標(biāo)題所示的功能2013-06-06
asp.net開發(fā)微信公眾平臺(tái)之驗(yàn)證消息的真實(shí)性
這篇文章主要介紹了asp.net開發(fā)微信公眾平臺(tái)之驗(yàn)證消息的真實(shí)性的相關(guān)資料,需要的朋友可以參考下2015-06-06

