.net新興日志框架Serilog簡(jiǎn)介
Serilog是.net下的新興的日志框架,本文這里簡(jiǎn)單的介紹一下它的用法。
首先安裝Nuget包:
Install-Package Serilog Install-Package Serilog.Sinks.Console
其中包Serilog是Log核心庫(kù),Serilog.Sinks.Console是Log的控制臺(tái)輸出庫(kù),這個(gè)也是日志框架的一貫策略,一個(gè)核心庫(kù)加多個(gè)輸出庫(kù)組合使用,這樣可以保持良好的擴(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屬性用來(lái)設(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í)際的使用過(guò)程中,往往并不是每次使用都去創(chuàng)建一個(gè)ILogger,一種方式是通過(guò)依賴注入的方式創(chuàng)建一個(gè)全局的Logger。不過(guò)這種方式需要引入DI框架。在小程序中使用不算方便。
另一種方式是直接使用靜態(tài)的Log類,它也攜帶了寫入日志的方法,用起來(lái)非常方便。
Log.Warning("warning"); Log.Error("err"); Log.Fatal("fatal");
不過(guò)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ù)庫(kù)LiteDB
- SQLite 輸出到文件數(shù)據(jù)庫(kù)SQLite
- SignalR 輸出為SignalR服務(wù)
- HTTP 輸出到REST服務(wù)
輸出格式配置
Serilog的日志輸出通過(guò)LoggerConfiguration類配置,詳細(xì)的配置參數(shù)可以參看官方文檔:Configuration Basics。在日常使用中,感覺(jué)更多的是直接通過(guò)LoggerConfiguration在代碼中配置。
到此這篇關(guān)于.net日志框架Serilog的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
巧用ASP.NET預(yù)編譯Web應(yīng)用程序規(guī)避調(diào)用延遲的方法
ASP.NET 1.x的開(kāi)發(fā)人員常常聽(tīng)到用戶抱怨首次調(diào)用應(yīng)用程序的時(shí)候會(huì)碰到初始化延遲。畢竟,初次請(qǐng)求會(huì)引發(fā)一個(gè)系列過(guò)程,包括運(yùn)行庫(kù)初始化、分析、把ASPX頁(yè)面編譯成中間語(yǔ)言、把方法即時(shí)編譯成本地代碼等等。2011-08-08一個(gè)支持普通分頁(yè)和綜合分頁(yè)的MVC分頁(yè)Helper
這篇文章主要為大家詳細(xì)介紹了一個(gè)支持普通分頁(yè)和綜合分頁(yè)的MVC分頁(yè)Helper,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09asp.net使用ODP即oracle連接方式的的防注入登錄驗(yàn)證程序
這篇文章主要介紹了asp.net使用ODP即oracle連接方式的的防注入登錄驗(yàn)證程序,需要的朋友可以參考下2014-05-05一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖
互斥鎖是一個(gè)互斥的同步對(duì)象,意味著同一時(shí)間有且僅有一個(gè)線程可以獲取它。這篇文章主要介紹了一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖,感興趣的可以了解一下2021-06-06Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁(yè)面而不是文件的問(wèn)題)
Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁(yè)面而不是文件的問(wèn)題)2012-01-01.Net MVC實(shí)現(xiàn)長(zhǎng)輪詢
這篇文章主要為大家詳細(xì)介紹了.Net MVC實(shí)現(xiàn)長(zhǎng)輪詢的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Asp.Net Core WebAPI使用Swagger時(shí)API隱藏和分組詳解
這篇文章主要給大家介紹了關(guān)于Asp.Net Core WebAPI使用Swagger時(shí)API隱藏和分組的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Asp.Net Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04ASP.NET MVC Webuploader實(shí)現(xiàn)上傳功能
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC Webuploader實(shí)現(xiàn)上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09