跳過到頁腳內容
.NET幫助

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

.NET 應用程式中的 Serilog 記錄器設定與結構化診斷記錄行為設定簡介

在 .NET Core 中,高效結構化的 Serilog 日誌配置對於診斷和理解應用程式行為或日誌事件至關重要。 在各種日誌函式庫中,Serilog 以其強大的結構化日誌訊息功能脫穎而出。 與傳統日誌不同,結構化日誌將日誌層級的訊息格式化為結構化資料,使其更容易分析和查詢。 本文將探討 Serilog 如何提升 .NET 6 應用程式中的記錄流程,確保每個記錄事件不只是字串,而是結構化、可查詢的物件。 此方法可將日誌訊息轉換為策略性資產,使監控與分析更加有效。

瞭解 Serilog 的功能

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

結構化日誌

Serilog 的突出特點之一是支援結構化日誌。 Serilog 可讓您記錄結構化資料,而非簡單地以純文字記錄訊息。 此結構化資料可以是 JSON 物件、字典或任何其他可序列化的類型。 透過記錄結構化資料,您可以使用 Elasticsearch 或 Splunk 等工具輕鬆分析和查詢日誌事件。

彈性配置

Serilog 提供彈性的設定選項,讓您可以根據應用程式的需求自訂記錄行為。 您可以程式化或使用設定檔來設定 Serilog。 這種靈活性可讓您在執行時調整記錄行為,而不需要重新啟動應用程式。

下沉函式庫

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

若要將 Serilog 整合到 .NET 6 ASP.NET Core 應用程式中,首先要透過 appsettings.json 檔案或 Serilog 設定部分設定 Serilog。 此組態決定了擷取日誌資料的方式、位置和內容。

透過組態檔案

使用組態 JSON 檔案定義日誌層級、輸出目的地 (如日誌檔案或主控台) 以及日誌輸出格式。 組態檔方式提供了在不修改程式碼的情況下變更記錄行為的靈活性。 這是透過在 appsettings.json 檔案中指定設定來實現的,該檔案允許您將日誌輸出導向到各種接收器,例如主控台、檔案,甚至是基於雲端的日誌管理服務。

程式化的程式碼

或者,使用 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# 函式庫,可大幅增強使用 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.使用所需的 sink 函式庫來設定 Serilog,例如使用 Serilog.Sinks.File 來設定日誌檔案,或使用 Serilog.Sinks.Console 來設定主控台輸出。 3.在您應用程式的程式碼中使用 Iron Software Suite 函式庫,可充分利用其功能並強化記錄流程。 這可能會涉及生成 PDF、讀取 BarCode 或搜刮網頁內容等任務。

透過整合 Iron Software Suite 與 Serilog,您可以擴充 ASP.NET Core 應用程式的記錄功能,並利用這些函式庫所提供的額外功能。

IronPDF

IronPDF 允許在 .NET 應用程式中建立、閱讀和編輯 PDF。 當結合 Serilog 來產生日誌資料的 PDF 報告時,這會特別有用,可讓您輕鬆地以標準格式散佈和檢視日誌資訊。

Serilog .NET (How It Works For Developer):圖 1 - IronPDF

IronOCR

IronOCR 是一個光學字元識別 (OCR) 函式庫,可將 125 種語言的影像翻譯成文字。 此功能可應用於必須從影像或掃描文件中萃取文字資料的記錄情境,從而以更多的上下文資訊來豐富記錄資料。

Serilog .NET (How It Works For Developer):圖 2 - IronOCR

IronXL

IronXL.Excel 提供與 Excel 搭配使用的功能,而不需要 Office Interop。這對於日誌用途特別有利,因為日誌資料可以匯出到 Excel 以進一步分析和報告,提供熟悉的資料操作和可視化介面。

Serilog .NET (How It Works For Developer):圖 3 - IronXL

IronBarcode

IronBarcode 有助於讀寫 QR 碼和 BarCode。 這個函式庫可以在日誌檔案中嵌入或抽取編碼資訊,強化日誌資訊的安全性與可追蹤性。

Serilog .NET (How It Works For Developer):圖 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 環境中的數據處理和報告能力。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我