本篇文章為大家展示了Serilog如何在ASP.Net Core中使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
安裝 Serilog
使用 Visual Studio 新建 ASP.Net Core 項目,接下來從 NuGet 上拉幾個包,具體如下:
Serilog
這個包提供了對基本的結構化日志的功能支持。
Serilog.AspNetCore
這個包提供了 Serilog 對 AspNetCore 的支持。
Serilog.Settings.Configuration
這個包打通了 Serilog 和 Configuration ,這樣你就可以直接從 appsettings.json 中讀取配置。
Serilog.Sinks.Console
Console接收器顧名思義就是將 Serilog 的日志輸出到 Console。
Serilog.Sinks.RollingFile
實現了對 滾動文件 的支持。
Serilog 利用 sink 特性將日志送到不同的地方,比如:text文件,數據庫,甚至是 ElasticSearch 中,換句話說,sink 特性可以把日志送到它該去的地方,當所有的 nuget 包都安裝好了之后,下面的代碼片段展示了如何將日志送到 console 中。
public HomeController(ILogger<HomeController> logger)
{
using (var logConfig = new LoggerConfiguration().WriteTo.Console().CreateLogger())
{
logConfig.Information("This is a test data.");
};
_logger = logger;
}
值得注意的是,Serilog 支持多個日志級別,如:verbose, debug, information, warning, error 和 fatal。
有時候為了調試目的,將日志送到 Console 是一個好辦法,但將程序部署到生產之后,更通用的做法就是將日志記錄到文件中,這樣方便在生產上實時查看并做一定程度的日志分析,剛好這里的 Serilog.Sink.RollingFile 支持對滾動文件的支持,下面的代碼片段展示了如何通過編程的方式將日志送到文件中。
public HomeController()
{
var logger = new LoggerConfiguration().MinimumLevel.Debug().WriteTo
.RollingFile(@"e:\log.txt", retainedFileCountLimit: 7)
.CreateLogger();
for (int i = 0; i < byte.MaxValue; i++)
{
logger.Information($"log {i}");
}
}
在 ASP.NET Core 中內置了 Logger 組件,這一節中我們一起看看如何使用 Serilog 將其進行替換,在 Program.Main 方法中使用如下代碼:
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
try
{
Log.Information("Starting web host");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}從上面的代碼中可以看到,我在 CreateHostBuilder 中使用了 UseSerilog() 擴展方法來啟動 Serilog,這樣就做好了 Serilog 的替換工作,接下來可以在 Controller 中通過依賴注入的方式獲取 logger 實例,如下代碼所示:
public IActionResult Index()
{
logger.LogInformation("hello world");
return View();
}
上述內容就是Serilog如何在ASP.Net Core中使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。