.NET 幫助

Serilog .NET(開發者使用方式)

發佈 2024年1月27日
分享:

Serilog 日誌記錄器配置介紹及 .NET 應用程式中的結構化診斷日誌行為配置

在 .NET Core 中,有效的結構化 Serilog 日誌配置對於診斷和理解應用程式行為或日誌事件至關重要。 在各種日誌記錄庫中,Serilog 以其強大的結構化日誌記錄訊息功能脫穎而出。 與傳統日誌記錄不同,結構化日誌記錄將日誌級別訊息格式化為結構化數據,使其更易於分析和查詢。 本文探討了 Serilog 如何提升 .NET 6 應用程式中的日誌記錄過程,確保每個日誌事件不僅僅是一個字串,而是一個結構化且可查詢的物件。 此方法將日誌訊息轉變為戰略資產,從而實現更有效的監控和分析。

瞭解 Serilog 的功能

Serilog 是一個強大且靈活的 .NET 應用程式記錄庫。 它提供了多種功能來提升日誌記錄體驗,並使診斷和分析應用程式行為變得更加容易。 本節將探討 Serilog 提供的一些主要功能。

結構化日誌記錄

Serilog 的一個突出特點是其對結構化日誌的支持。 Serilog 不僅僅是以純文字形式記錄訊息,它還允許您記錄結構化數據。 這個結構化數據可以是 JSON 對象、字典或任何其他可以序列化的類型。 透過記錄結構化數據,您可以輕鬆使用像 Elasticsearch 或 Splunk 這樣的工具來分析和查詢日誌事件。

靈活配置

Serilog 提供靈活的配置選項,允許您根據應用程式的需求自訂記錄行為。 您可以透過程式設置或使用配置文件來配置 Serilog。 這種靈活性允許您在執行期間調整日誌行為,而無需重新啟動應用程式。

Sink Libraries

Serilog 提供多種接收器庫,讓您可以將日誌事件發送到不同的目的地。 一些受欢迎的接收端库包括:

  • Serilog.Sinks.Console:將日誌事件發送到控制台。
  • Serilog.Sinks.File:將日誌事件寫入文本文件。
  • Serilog.Sinks.Seq:將日誌事件發送到 Seq,一個結構化日誌伺服器。
  • Serilog.Sinks.Elasticsearch:將日誌事件發送到Elasticsearch。

    這些接收器庫使得將 Serilog 與不同的日誌記錄基礎設施和工具整合變得簡單。

日誌增強

日誌增強是一項功能,可讓您在日誌事件中添加額外的上下文資訊。 Serilog 提供多種增強器,可以自動將時間戳、線程 ID 或日誌等級等資訊添加到您的日誌事件中。 您也可以創建自定義增強器來添加應用程序特定的信息。

日誌過濾

Serilog允許您根據各種條件篩選日誌事件。 您可以配置過濾器以根據日誌級別、屬性值或任何其他條件來排除或包括日誌事件。 此篩選功能讓您能夠專注於對您的分析或問題解決最相關的日誌事件。

通過了解和利用這些功能,您可以利用Serilog的強大功能來增強您的日誌記錄能力,並深入了解您的應用程式行為。

結構化日誌:核心功能

Serilog 的主要優勢在於將日誌訊息轉換為結構化數據。 與其他輸出純文本的日誌庫不同,Serilog 生成的日誌是結構化的 JSON 格式,從而簡化了解析和查詢日誌數據的過程。 此功能對現代應用程式至關重要,因為日誌分析和監控是運營情報的核心組成部分。 結構化日誌在訊息被引入像是 ELK 系統時特別有益。(Elasticsearch, Logstash, Kibana)堆疊進行進階分析。

豐富的日誌事件詳細資訊

Serilog 為日誌事件添加上下文資訊,提供應用程式內部情況的全貌視圖。 每個日誌事件可以包含許多細節,不僅僅是簡單的日誌訊息,還可以包括時間戳、日誌級別、例外詳情和自定義屬性。 這使得 Serilog 在日誌的深度和清晰度方面優於其他日誌庫,為開發人員提供了應用程式行為和性能的關鍵見解。

在 ASP.NET Core 中實現 Serilog

在 .NET 6 ASP.NET Core 應用程式中整合 Serilog,首先透過 appsettings.json 檔案或 Serilog 配置區段來配置 Serilog。 此設定決定了如何、在何處以及記錄哪些日誌數據。

通過配置文件

使用配置 JSON 檔案定義日誌等級和輸出目的地。(如日誌檔案或控制台)、以及日誌輸出格式。 配置文件方法提供了更改日誌行為的靈活性,而無需修改代碼。 這是通過在 appsettings.json 文件中指定設置來完成的,這允許您將日誌輸出引導到各種接收方,例如控制台、文件,甚至是基於雲的日誌管理服務。

在程式碼中以程式方式進行

或者,使用 LoggerConfiguration 類直接在代碼中配置 Serilog。 此方法常用於設置更複雜的日誌記錄場景,如動態日誌級別或自定義日誌接收器。 例如,您可以配置一個循環日誌檔案,在特定間隔時間或達到特定大小時創建新的日誌檔案,以確保有效的日誌檔案管理。

var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
VB   C#

與 ASP.NET Core 集成

將 Serilog 與 ASP.NET Core 整合包括通過套件管理器主控台添加 Serilog 套件,以及在 Program.cs 文件中設置記錄器。在 .NET 6 中,var buildervar app 語句能夠無縫地將 Serilog 集成到應用程式的日誌基礎設施中。 此過程將默認的日誌記錄器替換為Serilog,確保所有日誌消息都通過Serilog管道進行處理。

var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));
var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));
var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))
Dim app = builder.Build()
VB   C#

在 ASP.NET Core 中整合 Iron Software Suite 與 Serilog

Iron Software Suite 提供了一系列 C# 庫,能夠使用 Serilog 顯著增強 .NET 6 應用程式的日誌功能。 此套件包括各種工具,如 IronPDF、IronOCR、IronXL、IronZIP、IronQR、IronBarcode 和 IronWebScraper,每個工具都提供獨特的功能,可以整合到 ASP.NET Core 應用程式中,以增強其日誌記錄和數據處理功能。

要在 ASP.NET Core 應用程式中將 Iron Software Suite 與 Serilog 整合,請遵循以下一般步驟:

  1. 使用 NuGet 或套件管理器主控台安裝所需的 Iron Software Suite 套件。

  2. 使用所需的接收庫配置 Serilog,例如用於日誌文件的 Serilog.Sinks.File 或用於控制台輸出的 Serilog.Sinks.Console。

  3. 在您的應用程式代碼中使用 Iron Software Suite 函式庫,以利用其功能並增強日誌記錄過程。 這可能涉及生成 PDF、讀取條碼或提取網頁內容等任務。

    透過將 Iron Software Suite 與 Serilog 整合,您可以擴展 ASP.NET Core 應用程式的日誌記錄功能,並利用這些程式庫提供的附加功能。

IronPDF

IronPDF 允許在 .NET 應用程式中創建、閱讀和編輯 PDF。 當與Serilog結合使用時,這尤其有用,可以生成日誌數據的PDF報告,從而以標準格式輕鬆分發和查看日誌信息。

Serilog .NET(它如何為開發者工作):圖 1 - IronPDF

IronOCR

IronOCR 是一種光學字符識別(光學字符識別)可以將影像翻譯為127種語言文字的庫。 此功能可用於需要從圖片或掃描文件中提取文字資料的日誌記錄場景,從而充實日誌數據的背景資訊。

Serilog .NET(對開發者的運作方式):圖 2 - IronOCR

IronXL

IronXL 提供了無需 Office Interop 即可使用 Excel 的功能。這對於記錄目的特別有利,因為日誌數據可以導出到 Excel 以進行進一步分析和報告,提供了一個熟悉的介面以進行數據處理和可視化。

Serilog .NET(開發人員如何運作):圖 3 - IronXL

IronBarcode

IronBarcode 可輕鬆進行 QR 碼和條形碼的讀取和寫入。 此程式庫可以在日誌文件中嵌入或提取編碼信息,提高記錄信息的安全性和可追溯性。

Serilog .NET(開發人員如何使用):圖4 - IronBarcode

結論

將 Iron Software 套件與 Serilog 整合到 ASP.NET Core 應用程式中,不僅豐富了日誌記錄過程,還增加了一層處理、呈現和分析日誌數據的多樣性。 無論是生成 PDF 報告、處理基於圖像的日誌、處理 Excel 數據、管理日誌文件大小、保護日誌信息還是抓取網頁內容,Serilog 與 Iron Software Suite 的結合在 .NET 6 環境中為高級 日誌記錄和數據處理提供了無數可能性。

Iron Software 套件提供一個免費試用 Iron Software 的 C# 庫,為開發者提供了一個絕佳的機會,可以探索其功能和性能,以提升他們的 ASP.NET Core 應用程序,特別是在與 Serilog 集成以實現高級日志記錄和數據處理功能時。

< 上一頁
Microsoft 日誌記錄 C#(開發者如何運作)
下一個 >
C# REPL(對開發人員的運作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >