跳過到頁腳內容
.NET幫助

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

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

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

瞭解 Serilog 的功能

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

結構化日誌

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

彈性配置

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

下沉函式庫

Serilog 提供各種匯入函式庫,可讓您將日誌事件傳送到不同的目的地。 一些受歡迎的水槽庫包括::

  • 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。 此方法常用於設定較複雜的日誌情境,例如動態日誌層級或自訂日誌匯。 例如,您可以設定滾動日誌檔案,在特定時間間隔或達到一定大小時建立新的日誌檔案,確保有效的日誌檔案管理。

// 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.使用所需的匯集函式庫來設定 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 的結構化日誌有哪些優點?

使用 Serilog 的結構化日誌提供了更容易解析和查詢日誌資料的優點,這對於使用 Elasticsearch 等工具進行分析、增強作業智慧和監控非常有用。

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

在 .NET 6 應用程式中,Serilog 可使用 `LoggerConfiguration` 類或透過配置檔案(如 `appsettings.json`)進行配置,讓您不需變更程式碼即可彈性調整記錄行為。

Serilog 為不同的記錄目的地提供哪些整合選項?

Serilog 提供各種匯入函式庫進行整合,允許將日誌事件傳送到不同的目的地,例如控制台、文字檔或伺服器,例如 Elasticsearch 或 Seq。

Richers 在 Serilog 日誌中扮演什麼角色?

Serilog 中的 Enrichers 可為日誌事件添加上下文資訊,例如時間戳記和日誌層級,並可建立自訂的 Enrichers 以包含特定的應用程式資料,從而提升日誌的資訊價值。

Serilog 是否可以與其他函式庫結合以增強功能?

是的,Serilog 可以與 IronPDF、IronOCR 和 IronXL 等函式庫結合,提供 PDF 產生、OCR 處理和 Excel 操作等功能,豐富 .NET 應用程式的記錄流程和資料處理。

如何使用 .NET 產生日誌資料的 PDF 報告?

您可以使用 IronPDF for .NET 之類的函式庫,在 .NET 中產生日誌資料的 PDF 報告,IronPDF for .NET 可以建立、讀取和編輯 PDF,允許與日誌系統整合以產生詳細的日誌報告。

是否可以將日誌資料匯出至 Excel,以便在 .NET 中進行分析?

是的,透過使用 IronXL 之類的函式庫,您可以在不需要 Office Interop 的情況下操作 Excel 檔案,允許將日誌資料匯出至 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 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

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

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。