跳過到頁腳內容
.NET幫助

Serilog .NET(開發者的工作原理)

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

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

理解 Serilog 的功能

Serilog 是一個適用於 .NET 應用的強大且靈活的日誌庫。 它提供了各種功能,以提升日誌記錄體驗,使診斷和分析應用行為變得更加容易。 本節將探討 Serilog 提供的一些關鍵功能。

結構化日誌

Serilog 的一大特色是其支持結構化日誌。 Serilog 不僅僅將消息作為純文本記錄,還允許您記錄結構化數據。 這些結構化數據可以是 JSON 對象、字典或任何可以序列化的類型。 通過記錄結構化數據,您可以輕鬆使用像 Elasticsearch 或 Splunk 這樣的工具分析和查詢日誌事件。

靈活的配置

Serilog 提供靈活的配置選項,讓您根據應用需求自定義日誌行為。 您可以使用編程方式或配置文件來配置 Serilog。 這種靈活性允許您在運行時調整日誌行為,而不需要重啟應用。

Sink 日誌庫

Serilog 提供了各種 Sink 日誌庫,允許您將日誌事件發送到不同的目的地。 一些流行的 Sink 日誌庫包括:

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

這些 Sink 日誌庫使 Serilog 與不同的日誌基礎設施和工具的整合變得輕鬆。

日誌豐富功能

日誌豐富功能允許您為日誌事件添加額外的上下文信息。 Serilog 提供各種豐富器,能自動將時間戳、線程 ID 或日誌級別等信息添加到日誌事件中。 您還可以創建自定義豐富器,以添加特定於應用的資訊。

日誌過濾

Serilog 允許您根據各種標準過濾日誌事件。 您可以配置過濾器,以根據日誌級別、屬性值或其他條件排除或包含日誌事件。 這種過濾功能使您能夠專注於與分析或故障排除最相關的日誌事件。

通過瞭解和利用這些特性,您可以使用 Serilog 增強您的日誌功能,從而深入了解應用的行為。

結構化日誌: A Core Feature

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 文件中指定設置來完成的,允許您將日誌輸出定向到不同的 Sink,如控制台、文件,甚至是基於雲的日誌管理服務。

在代碼中以編程方式

或者,使用 LoggerConfiguration 類直接在代碼中配置 Serilog。 這種方法通常用於設置更複雜的日誌場景,如動態日誌級別或自定義日誌 Sink。 例如,您可以配置一個滾動日誌文件,在特定間隔或達到某個大小時創建新日誌文件,以確保高效的日誌文件管理。

// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
' Create a logger instance with a rolling log file that creates a new log file every day
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
$vbLabelText   $csharpLabel

與 ASP.NET Core 集成

將 Serilog 與 ASP.NET Core 集成需要通過包管理控制台添加 Serilog 包,並在 Program.cs 文件中設置記錄器。在 .NET 6 中,var buildervar app 語句無縫地將 Serilog 插入應用的日誌基礎設施中。 此過程用 Serilog 替換了默認的記錄器,確保所有日誌消息都通過 Serilog 管線處理。

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)

' Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))

Dim app = builder.Build()
$vbLabelText   $csharpLabel

在 ASP.NET Core 中集成 Iron Software Suite 與 Serilog

Iron Software Suite 提供了一組 C# 庫,能在 .NET 6 應用中使用 Serilog 極大地提升日誌功能。 這個套件包括各種工具,如 IronPDF、IronOCR、IronXL、IronZIP、IronQR、IronBarcode 和 IronWebScraper,每個都提供獨特的功能,可以集成到 ASP.NET Core 應用中,增強其日誌記錄和數據處理能力。

要在 ASP.NET Core 應用中將 Iron Software Suite 與 Serilog 集成,請遵循以下基本步驟:

  1. 使用 NuGet 或包管理控制台安裝所需的 Iron Software Suite 包。
  2. 使用所需的 Sink 日誌庫配置 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 是能將圖像轉換為 125 種語言文本的光學字符識別(OCR)庫。 在必須從圖像或掃描文件中提取文本數據的日誌記錄場景中,此功能可用,從而用更多上下文信息豐富日誌數據。

Serilog .NET(如何適用於開發人員):圖 2 - IronOCR

IronXL

IronXL 提供在不需要 Office Interop 的情況下處理 Excel 的功能。這對於日誌記錄特別有利,可將日誌數據導出到 Excel 以進一步分析和報告,提供熟悉的界面進行數據操作和可視化。

 Serilog .NET(如何適用於開發人員):圖 3 - IronXL

IronBarcode

IronBarcode 促進了 QR 碼和條形碼的讀寫。 此庫可以在日誌文件中嵌入或提取編碼信息,增強記錄信息的安全性和可追溯性。

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

結論

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

Iron Software Suite 提供 Iron Software 的 C# 庫的免費試用版,這對於開發人員來說是一個絕佳的機會,可以探索其功能和能力,以增強其 ASP.NET Core 應用,尤其是在與 Serilog 集成以獲得高級日誌記錄和數據處理功能時。

常見問題解答

Serilog 如何增強 .NET 應用程式中的日誌記錄?

Serilog 透過將日誌事件轉換為結構化、可查詢的物件,來增強 .NET 應用程式中的日誌記錄,這比傳統的純文字日誌記錄提供了更好的診斷和分析。

使用 Serilog 進行結構化日誌記錄有哪些優勢?

使用 Serilog 進行結構化日誌記錄的優勢在於更容易解析和查詢日誌數據,這對於使用 Elasticsearch 等工具進行分析非常有用,提升了運營智能和監控。

如何在 .NET 6 應用程式中配置 Serilog?

在 .NET 6 應用程式中,Serilog 可以透過使用 `LoggerConfiguration` 類或者通過配置文件如 `appsettings.json` 進行配置,允許靈活調整日誌記錄行為而無需更改代碼。

Serilog 提供哪些不同日誌目的地的整合選項?

Serilog 提供多種 sink 庫進行整合,允許日誌事件被發送至不同的目的地,如控制台、文本文件,或像 Elasticsearch 或 Seq 的伺服器。

增強器在 Serilog 日誌記錄中扮演什麼角色?

Serilog 中的增強器為日誌事件添加上下文信息,如時間戳及日誌級別,並可以創建自定義增強器以包含特定應用程序數據,提高日誌的信息價值。

Serilog 可以與其他庫結合以增強功能嗎?

是的,Serilog 可以與像 IronPDF、IronOCR 和 IronXL 等庫結合,這些庫提供 PDF 生成、OCR 處理和 Excel 操作等功能,增強日誌記錄過程和 .NET 應用程序中的數據處理。

如何使用 .NET 生成日誌數據的 PDF 報告?

你可以使用像 IronPDF 這樣的庫在 .NET 中生成日誌數據的 PDF 報告,IronPDF 可以創建、讀取和編輯 PDF,允許與日誌系統整合以生成詳盡的日誌報告。

在 .NET 中將日誌數據匯出到 Excel 進行分析是否可能?

是的,通過使用像 IronXL 這樣的庫,你可以操作 Excel 文件而不需要 Office Interop,允許將日誌數據匯出到 Excel 以便在 .NET 應用程序中進行進一步分析和報告。

Iron Software 庫對像 Serilog 這樣的日誌系統帶來了哪些好處?

Iron Software 庫增強了像 Serilog 這樣的日誌系統,提供額外功能如 PDF 生成、OCR 和 Excel 文件操作,豐富了 .NET 環境中的數據處理和報告能力。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。