網站首頁 編程語言 正文
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在代碼中配置。
原文鏈接:https://www.cnblogs.com/TianFang/p/9416238.html
相關推薦
- 2022-10-26 C#?form-data上傳圖片流到遠程服務器的詳細代碼_C#教程
- 2022-06-19 C#中的checksum計算公式_C#教程
- 2022-05-25 Entity?Framework?Core對Web項目生成數據庫表_實用技巧
- 2022-06-02 詳解Python?flask的前后端交互_python
- 2022-09-08 pytorch關于Tensor的數據類型說明_python
- 2022-05-19 C++實現職工工資管理系統課程設計_C 語言
- 2022-11-05 替代pod?update速度慢的lg_pod_plugin安裝使用詳解_IOS
- 2023-02-18 C#調用EXE文件實現傳參和獲取返回結果_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支