How to use Custom Logging in C
C# 的自訂記錄功能讓您能夠實作一套量身打造的記錄系統,用以擷取應用程式專屬的事件與訊息。 透過 IronPDF,您可以將所有 PDF 處理日誌重定向至自訂日誌記錄器,方法是將 LoggingMode 設定為 Custom,並指派您的日誌記錄器實作。 此功能讓您能夠將 IronPDF 的詳細記錄輸出整合至現有的記錄基礎架構中,無論您使用的是 NLog、Serilog、log4net 還是自訂解決方案。
當您需要集中管理來自多個元件的日誌、套用自訂格式、依嚴重性等級進行篩選,或將日誌路由至特定目的地(例如檔案、資料庫或監控服務)時,自訂日誌記錄功能便顯得格外重要。 透過 IronPDF 實作自訂記錄功能,您將能完全掌控應用程式中 PDF 生成與處理事件的追蹤方式。
快速入門:使用 IronPDF 實作自訂記錄
從使用 IronPDF 在 C# 中進行自訂記錄開始。 本指南說明如何將 LoggingMode 設定為 Custom,並將其與您的記錄器類別連結。 將 IronPDF 的訊息傳送至您的自訂記錄器,以便監控與管理應用程式日誌。 設定過程簡單明瞭,並能強化您應用程式的記錄功能。 如需 IronPDF 功能的完整概覽,請參閱我們的《快速入門指南》。
簡化工作流程(5 個步驟)
- 從 NuGet 下載 IronPDF
- 將 LoggingMode 屬性設定為
LoggingModes.Custom - 將 CustomLogger 屬性指派給您的自訂記錄器物件
- 所有日誌訊息將轉發至自訂日誌記錄器
- 輸出日誌訊息以檢視日誌
如何實作自訂記錄範例?
若要使用自訂記錄功能,請將 LoggingMode 屬性變更為 LoggingModes.Custom。 接著將 CustomLogger 屬性指派給您的自訂記錄器類別。 這為與各種記錄框架的整合提供了靈活性,並能在您的應用程式中維持一致的記錄模式。
此實作所需的設定極為簡便。完成設定後,所有 IronPDF 操作——包括 HTML 轉 PDF、PDF 處理及渲染——都會自動透過您的自訂記錄器傳送日誌訊息。 此整合功能可確保您能擷取 PDF 處理作業的關鍵資訊。
為何應使用 IronPDF 的自訂記錄功能?
:path=/static-assets/pdf/content-code-examples/how-to/custom-logging-custom-logging.cs
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.Custom;
IronSoftware.Logger.CustomLogger = new CustomLoggerClass("logging");
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.Custom
IronSoftware.Logger.CustomLogger = New CustomLoggerClass("logging")
IronPDF 的日誌將導向自訂日誌記錄器物件。 這些訊息與 IronPDF 日誌記錄器中的內容完全相同; 它們會被傳送至自訂記錄器。 自訂記錄器實作決定了訊息的處理方式。 請參考以下自訂記錄器類別的範例。
自訂記錄功能為生產環境應用程式帶來多項優勢:
- 集中式日誌管理:將 IronPDF 日誌與您現有的日誌記錄基礎架構整合
- 強化除錯功能:擷取 PDF 操作的詳細資訊以利疑難排解
- 效能監控:追蹤渲染時間與資源使用狀況
- 錯誤追蹤:自動擷取並回報 PDF 生成失敗的情況
- 合規性:在受監管產業中,須針對文件生成流程維持稽核追蹤紀錄
對於需要異步處理的應用程式,自訂記錄功能有助於追蹤並行 PDF 操作,並識別潛在的瓶頸。
自訂記錄器類別的樣貌為何?
:path=/static-assets/pdf/content-code-examples/how-to/custom-logging-custom-logging-class.cs
public class CustomLoggerClass : ILogger
{
private readonly string categoryName;
public CustomLoggerClass(string categoryName)
{
this.categoryName = categoryName;
}
public IDisposable BeginScope<TState>(TState state)
{
return null;
}
public bool IsEnabled(LogLevel logLevel)
{
return true;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
if (!IsEnabled(logLevel))
{
return;
}
// Implement your custom logging logic here.
string logMessage = formatter(state, exception);
// You can use 'logLevel', 'eventId', 'categoryName', and 'logMessage' to log the message as needed.
// For example, you can write it to a file, console, or another destination.
// Example: Writing to the console
Console.WriteLine($"[{logLevel}] [{categoryName}] - {logMessage}");
}
}
Public Class CustomLoggerClass
Implements ILogger
Private ReadOnly categoryName As String
Public Sub New(ByVal categoryName As String)
Me.categoryName = categoryName
End Sub
Public Function BeginScope(Of TState)(ByVal state As TState) As IDisposable
Return Nothing
End Function
Public Function IsEnabled(ByVal logLevel As LogLevel) As Boolean
Return True
End Function
Public Sub Log(Of TState)(ByVal logLevel As LogLevel, ByVal eventId As EventId, ByVal state As TState, ByVal exception As Exception, ByVal formatter As Func(Of TState, Exception, String))
If Not IsEnabled(logLevel) Then
Return
End If
' Implement your custom logging logic here.
Dim logMessage As String = formatter(state, exception)
' You can use 'logLevel', 'eventId', 'categoryName', and 'logMessage' to log the message as needed.
' For example, you can write it to a file, console, or another destination.
' Example: Writing to the console
Console.WriteLine($"[{logLevel}] [{categoryName}] - {logMessage}")
End Sub
End Class
此實作遵循標準的 Microsoft.Extensions.Logging.ILogger 介面,使其與 .NET Standard 記錄系統生態圈相容。 Logger 類別包含:
- 類別名稱:有助於識別日誌訊息的來源
- 日誌等級篩選:控制要擷取哪些嚴重性等級
- 彈性輸出:將日誌導向任何目的地(主控台、檔案、資料庫等)
- 例外處理:正確格式化並記錄例外詳細資訊
- 狀態管理:支援使用
BeginScope的結構化記錄
針對進階情境,請探索會影響日誌輸出的渲染選項,特別是在處理複雜的 HTML 轉換,或使用 Chrome 渲染引擎時。
自訂日誌輸出會是什麼樣子?
在此範例中,日誌訊息前會附加額外資訊。
控制台輸出展示了自訂記錄功能如何提供關於 IronPDF 內部運作的詳細資訊。 您可以查看:
- Chrome 客戶端初始化步驟
- 建立部署候選方案
- 原生函式庫載入順序
- 組件部署成功的確認訊息
此層級的細節對於除錯 PDF 生成問題或優化效能而言極為重要。 結構化的格式便於透過程式碼解析日誌,或與日誌分析工具整合。
自訂記錄實作的最佳實踐
在使用 IronPDF 實作自訂記錄功能時,請參考以下最佳實務:
- 使用適當的日誌等級:設定您的日誌記錄器,以擷取適當的詳細程度,同時避免佔用過多日誌儲存空間
- 包含上下文資訊:添加請求 ID、使用者資訊或交易詳情,以關聯 PDF 操作
- 處理敏感資料:確保您的記錄器不會洩露 PDF 內容中的機密資訊
- 監控效能:追蹤 PDF 生成時間,以找出優化機會
- 設定警示:針對重大錯誤或效能下降的情況設定通知
在生產環境部署時,特別是使用授權金鑰的情況下,完善的記錄功能能確保運作順暢並快速解決問題。
常見記錄問題的疑難排解
若您在使用自訂記錄功能時遇到問題:
- 請確認您的記錄器已正確實作
ILogger介面 - 請確認在執行任何 IronPDF 操作之前,已設定
LoggingMode - 請確保您的記錄器具備線程安全性,以支援並行操作
- 若需寫入檔案或外部系統,請審查日誌權限
如需更多疑難排解資源,請參閱我們的疑難排解指南,或查閱 API 參考文件以獲取有關記錄屬性與方法的詳細說明。
準備好探索更多可能性了嗎? 請點此查看我們的教學頁面:其他功能
常見問題
C# 中的自訂記錄功能是什麼?它如何與 PDF 處理配合運作?
透過 IronPDF 在 C# 中進行自訂記錄,可讓您實作一套量身打造的記錄系統,用以擷取 PDF 處理事件與訊息。只要將 LoggingMode 設定為 Custom 並指定您的記錄器實作,IronPDF 便會將所有 PDF 產生與處理的記錄重定向至您的自訂記錄器,從而實現與 NLog、Serilog 或 log4net 等現有記錄基礎架構的整合。
如何啟用 PDF 操作的自訂記錄功能?
若要啟用 IronPDF 的自訂記錄功能,請將 IronSoftware.Logger.LoggingMode 設定為 LoggingModes.Custom,並將您的自訂記錄器類別指派給 IronSoftware.Logger.CustomLogger。設定完成後,所有 IronPDF 操作(包括 HTML 轉 PDF 及 PDF 處理)都會自動透過您的自訂記錄器傳送記錄訊息。
實作自訂日誌記錄功能來生成 PDF 有哪些好處?
IronPDF 的自訂記錄功能可讓您完全掌控 PDF 處理事件的追蹤方式。它能協助您集中管理來自多個元件的記錄、套用自訂格式、依嚴重性等級進行篩選,並將記錄傳送至特定目的地(例如檔案、資料庫或監控服務),從而強化應用程式的記錄功能。
我能否將 PDF 處理日誌與現有的日誌記錄框架整合?
是的,IronPDF 的自訂記錄功能可與常見的記錄框架(包括 NLog、Serilog、log4net 或任何自訂記錄解決方案)無縫整合。這確保了應用程式中記錄模式的一致性,同時能擷取 PDF 處理操作的關鍵資訊。
實作自訂記錄功能的最低限度工作流程為何?
最簡化的工作流程包含 5 個步驟:從 NuGet 下載 IronPDF,將 LoggingMode 設定為 LoggingModes.Custom,將 CustomLogger 指派給您的自訂記錄器物件,所有記錄訊息便會轉發至您的自訂記錄器。最後,輸出記錄訊息以檢視 IronPDF 操作的記錄。

