.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 提供了各種 sink 庫,使您能將日誌事件發送到不同的目的地。以下是一些流行的 sink 庫:

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

這些 sink 庫讓 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#

集成 Iron Software Suite 與 Serilog 於 ASP.NET Core

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

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

  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 互操作功能即可處理 Excel 的功能。這對於記錄目的特別有利,因為日誌數據可以導出到 Excel 以進行進一步的分析和報告,提供熟悉的界面進行數據操作和可視化。

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

IronBarcode

IronBarcode 可幫助讀取和寫入 QR 碼和條碼。此庫可在日誌文件中嵌入或提取編碼信息,增強日誌信息的安全性和可追溯性。

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

結論

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

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

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

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

免費 NuGet 下載 總下載次數: 10,840,061 查看許可證 >