使用 Serilog 框架記錄日志
#.NET Platform ?
Serilog 是一個用于.NET應(yīng)用程序的日志記錄開源庫,配置簡單,接口干凈,并可運行在最新的.NET平臺上,與其他日志庫不同, Serilog 是以功能強大的結(jié)構(gòu)化事件數(shù)據(jù)為基礎(chǔ)構(gòu)建的, 支持將日志輸出到控制臺、文件、數(shù)據(jù)庫和其它更多的方式,支持參數(shù)化日志模板,非常靈活。

接下來零度帶大家在控制臺程序中實踐一下 Serilog 框架的簡單配置,首先,使用 NuGet 方式安裝 Serilog 核心庫,其次安裝控制臺輸出擴展庫,如果你想將日志輸出到其它存儲介質(zhì),可安裝其它擴展庫,Serilog支持的擴展庫是很多的。
? Install-Package Serilog
? Install-Package Serilog.Sinks.Console
然后引用命名空間:
using Serilog;
使用 LoggerConfiguration 創(chuàng)建 ILogger 對象:
var log = new LoggerConfiguration()
? ?.WriteTo.Console()
? ?.CreateLogger();
一般情況下,我們在整個應(yīng)用程序中使用同一個 ILogger 對象就可以了,所以在首次啟動的時候初始化即可。接下來就可以寫日志了。
log.Information("Hello, 零度!");`
如果您想在全局使用日志記錄器,那么可以通過下面的方式將當前的日志記錄器設(shè)置為全局對象,以后就可以當前程序的任何地方使用這個記錄器了。
Log.Logger = log;
Log.Information("The global logger has been configured");
下面的示例將日志同時輸出到控制臺和文件中,而且日志最小記錄級別設(shè)置為調(diào)試模式,首先安裝程序庫:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File
在控制臺中配置日志記錄器,在 ASP.NET Core 中的配置類似:
? ?using System;
? ?using Serilog;
? ?namespace SerilogExample
? ?{
? ? ? ?class Program
? ? ? ?{
? ? ? ? ? ?static void Main()
? ? ? ? ? ?{
? ? ? ? ? ? ? ?Log.Logger = new LoggerConfiguration()
? ? ? ? ? ? ? ? ? ?.MinimumLevel.Debug()
? ? ? ? ? ? ? ? ? ?.WriteTo.Console()
? ? ? ? ? ? ? ? ? ?.WriteTo.File("logs\\myapp.txt", rollingInterval: RollingInterval.Day)
? ? ? ? ? ? ? ? ? ?.CreateLogger();
? ? ? ? ? ? ? ?Log.Information("Hello, world!");
? ? ? ? ? ? ? ?int a = 10, b = 0;
? ? ? ? ? ? ? ?try
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?Log.Debug("Dividing {A} by {B}", a, b);
? ? ? ? ? ? ? ? ? ?Console.WriteLine(a / b);
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?catch (Exception ex)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?Log.Error(ex, "Something went wrong");
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?Log.CloseAndFlush();
? ? ? ? ? ? ? ?Console.ReadKey();
? ? ? ? ? ?}
? ? ? ?}
? ?}
運行這個控制臺應(yīng)用程序,即可輸出有顏色的控制臺日志。這里只是一個最簡單不過的配置, Serilog 框架的配置是非常靈活的,您想了解更詳細的配置方法,可參閱
進行學習。關(guān)于 Serilog 框架非常不錯的博客整理: