Serilog

Serilog 是一個 .NET 平台上強大的日誌紀錄框架。它提供了結構化日誌記錄功能,使得日誌的資料更加結構化和有意義,便於在不同環境中進行搜尋、篩選和分析。Serilog 支援多種目標(稱為“接收器”,如檔案、資料庫、控制台、遠端伺服器等)來儲存日誌,並且能夠自訂輸出格式,滿足不同的日誌需求。

Serilog 的特色

  1. 結構化日誌:使用結構化數據記錄(例如 JSON 格式),便於分析和篩選。

  2. 靈活的接收器:支援多種接收器,例如控制台、檔案、資料庫、Elasticsearch 等。

  3. 支援多種日誌等級:Trace、Debug、Information、Warning、Error、Fatal 等等。

  4. 可擴充性:可以通過自訂接收器和格式來滿足不同的日誌需求。

安裝 Serilog

在 .NET 中可以通過 NuGet 安裝 Serilog 及其常用接收器。以控制台和檔案接收器為例:

dotnet add package Serilog
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File

基本使用範例

以下是一個使用 Serilog 寫入日誌的範例程式碼。

1. 基本設定與日誌寫入

這個範例會將日誌寫入控制台。

2. 使用結構化日誌

Serilog 支援在日誌中插入結構化數據,便於日後分析。例如,可以傳入具名參數來添加資料。

這樣的結構化日誌會顯示為:

日誌框架可以識別 {User}{Time} 作為鍵值,方便搜尋和篩選。

3. 將日誌寫入檔案

要將日誌輸出到檔案,可以加入 File 接收器:

此設定會在 logs 資料夾下建立 log.txt 檔案,並依日期自動分檔。

配合 .NET ASP.NET Core 使用

在 ASP.NET Core 中,通常會在 Program.csappsettings.json 中設定 Serilog:

1. Program.cs 中的設定範例

2. 在 appsettings.json 中配置 Serilog

可以在 appsettings.json 中設置日誌紀錄的細節,例如輸出到控制台和檔案:

常見接收器

  • Console:輸出到控制台。

  • File:寫入到檔案,支援滾動檔案(如每天新建一個檔案)。

  • Seq:支援寫入到 Seq 日誌伺服器。

  • Elasticsearch:整合到 ELK 堆疊,用於日誌分析。

  • SQL Server:將日誌寫入 SQL 資料庫。

結論

Serilog 是 .NET 開發中非常靈活且強大的日誌紀錄框架。透過結構化日誌和多樣化的接收器支援,開發者能更有效地管理和分析日誌,使得應用程式的維護和調試更加容易。

Last updated