Prism Logging(對於開發者的運行原理)
控制台應用程式雖然沒有圖形使用者介面,但通常需要強大的日誌機制來追蹤錯誤、監控應用程式效能,並有效率地除錯問題。 Prism.Plugin.Logging是 Prism 日誌框架的延伸,為 .NET 應用程式提供全面的日誌解決方案,包括支援各種日誌提供者。
在本文中,我們將探討如何使用 IronPDF(一個用於處理 PDF 文件的強大 .NET 函式庫)將 Prism Logging 整合到主控台應用程式中。 透過結合這些工具,開發人員可以在主控台應用程式中實作進階的日誌功能,增強維護與疑難排解能力。
Prism 日誌簡介
Prism.Plugin.Logging透過提供全面的日誌功能,擴充了用於建置 XAML 應用程式的流行框架 Prism。 Prism.Plugin.Logging 支援 NLog、Serilog 及 Microsoft.Extensions.Logging 等多種記錄提供者,提供彈性及客製化選項以符合各種應用程式需求。
使用 Prism 日誌的優點
靈活的日誌設定: Prism.Plugin.Logging 可讓開發人員無縫設定各種日誌提供者,包括 NLog、Serilog 和 Microsoft.Extensions.Logging 等熱門選項。
結構化日誌支援:開發者可以使用 Prism.Plugin.Logging 將結構化資料與其訊息一起記錄。 在涉及控制台應用程式的情況下,此功能尤其有用,因為在控制台應用程式中,必須記錄全面的上下文資料,包括時間戳記、錯誤代碼或使用者活動,並將其加入 IronPDF 所產生的日誌報告中。
如何使用 Prism 日誌。
1.建立新的 C# 專案 2.安裝 Prism 日誌套件。 3.為 SyslogLogger 建立一個物件,並傳入設定作為參數。 4.在需要時隨時呼叫日誌方法,並傳送日誌訊息和日誌層級。 5.最後處理日誌物件。
開始使用 Prism 日誌。
Setting up Prism in C# Projects
將 Prism 整合到 C# 專案中非常容易。 要新增 Prism,必須使用 Microsoft 的 .NET 套件管理員 NuGet。 本庫提供將 Prism Logs 納入專案所需的工具與函式庫。
。
在 Dot .NET 應用程式中實作 Prism。
Prism 與多種 Dot .NET 應用程式類型相容,包括 Windows Forms (WinForms) 和 Windows Console。 雖然每個框架的實作方式不同,但基本概念總是相同的,協助我們記錄與您的應用程式相關的資料。
在 Visual Studio 中建立新專案
在 Visual Studio 應用程式中選擇"檔案"功能表。 按一下"新專案",然後選擇"控制台應用程式"。
。
選擇檔案位置後,在指定的文字區輸入專案名稱。 然後如以下範例所示,按一下建立按鈕,選擇必要的 .NET Framework。

選擇的應用程式將決定 Visual Studio 專案的組織方式。 只需開啟 program.cs 檔案,即可開始為應用程式新增程式碼並建立應用程式。 您可以使用 Windows、主控台或網頁應用程式。
在此之後,可加入函式庫並測試程式碼。
使用 Prism 日誌的基本範例
在下面的程式碼範例中,我們先初始化 Prism 日誌物件,然後將不同的日誌層級逐一加入 Prism 日誌中,並將所有日誌及其關鍵性儲存至清單中。
using Prism.Logging.Syslog;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
public class Demo
{
public string Name { get; set; }
public int Age { get; set; }
// Configure the logger options
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
static IList<LogData> Loglst = new List<LogData>();
static async Task Main(string[] args)
{
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
PerformApplicationLogic();
MessageLog("Application stopped.", Prism.Logging.Syslog.Level.Information);
}
static void PerformApplicationLogic()
{
// Example application logic
Console.WriteLine("Performing application logic...");
// Simulate error
try
{
throw new Exception("Simulated Exception");
}
catch (Exception ex)
{
MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
}
}
// Logs messages and their levels
static void MessageLog(string message, Prism.Logging.Syslog.Level level)
{
Loglst.Add(new LogData { Message = message, Level = level.ToString() });
logger.Log(message, level);
}
public class LogData
{
public string Message { get; set; }
public string Level { get; set; }
}
public class Options : ISyslogOptions
{
public string HostNameOrIp { get; set; }
public int? Port { get; set; }
public string AppNameOrTag { get; set; }
}
}
}
using Prism.Logging.Syslog;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
public class Demo
{
public string Name { get; set; }
public int Age { get; set; }
// Configure the logger options
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
static IList<LogData> Loglst = new List<LogData>();
static async Task Main(string[] args)
{
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
PerformApplicationLogic();
MessageLog("Application stopped.", Prism.Logging.Syslog.Level.Information);
}
static void PerformApplicationLogic()
{
// Example application logic
Console.WriteLine("Performing application logic...");
// Simulate error
try
{
throw new Exception("Simulated Exception");
}
catch (Exception ex)
{
MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
}
}
// Logs messages and their levels
static void MessageLog(string message, Prism.Logging.Syslog.Level level)
{
Loglst.Add(new LogData { Message = message, Level = level.ToString() });
logger.Log(message, level);
}
public class LogData
{
public string Message { get; set; }
public string Level { get; set; }
}
public class Options : ISyslogOptions
{
public string HostNameOrIp { get; set; }
public int? Port { get; set; }
public string AppNameOrTag { get; set; }
}
}
}
Imports Prism.Logging.Syslog
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
Friend Class Program
Public Class Demo
Public Property Name() As String
Public Property Age() As Integer
' Configure the logger options
Private Shared genOptions As New Options With {
.HostNameOrIp = "127.0.0.1",
.Port = 514,
.AppNameOrTag = "LoggingDemo"
}
Private Shared logger As New SyslogLogger(genOptions)
Private Shared Loglst As IList(Of LogData) = New List(Of LogData)()
Shared Async Function Main(ByVal args() As String) As Task
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information)
PerformApplicationLogic()
MessageLog("Application stopped.", Prism.Logging.Syslog.Level.Information)
End Function
Private Shared Sub PerformApplicationLogic()
' Example application logic
Console.WriteLine("Performing application logic...")
' Simulate error
Try
Throw New Exception("Simulated Exception")
Catch ex As Exception
MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error)
End Try
End Sub
' Logs messages and their levels
Private Shared Sub MessageLog(ByVal message As String, ByVal level As Prism.Logging.Syslog.Level)
Loglst.Add(New LogData With {
.Message = message,
.Level = level.ToString()
})
logger.Log(message, level)
End Sub
Public Class LogData
Public Property Message() As String
Public Property Level() As String
End Class
Public Class Options
Implements ISyslogOptions
Public Property HostNameOrIp() As String
Public Property Port() As Integer?
Public Property AppNameOrTag() As String
End Class
End Class
End Class
日誌報告由 Prism Logging 產生。 我們使用 Kiwi Syslog Service Manager 監控 Prism 日誌。
輸出 Prism 記錄檔

Prism 日誌作業
可擴充記錄
Prism.Plugin.Logging 的功能透過日誌進行擴充,提供了更多的功能和彈性。 它提供一系列的設定選項來調整記錄層級、記錄目標和其他變數,以符合您應用程式的記錄需求。
多重日誌目標
您可以使用 Prism.Plugin.Logging 將日誌訊息路由到各種位置,包括主控台、檔案、資料庫和其他日誌服務。 由於這種靈活性,您可以根據應用程式的需求和環境選擇最佳的記錄目標。
自訂記錄器
有了這個外掛程式,您就可以實作 Prism 的 ILoggerFacade 介面來建構自訂的記錄器。 這可讓您根據應用程式的需求建構自訂的記錄功能,或與第三方記錄框架連接。
使用 Prism 日誌建立日誌。
Prism 日誌只需幾行程式碼即可輕鬆建立。 以下是建立日誌的範例。
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log("Sample message", Prism.Logging.Syslog.Level.Information);
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log("Sample message", Prism.Logging.Syslog.Level.Information);
Private Shared genOptions As New Options With {
.HostNameOrIp = "127.0.0.1",
.Port = 514,
.AppNameOrTag = "LoggingDemo"
}
Private Shared logger As New SyslogLogger(genOptions)
logger.Log("Sample message", Prism.Logging.Syslog.Level.Information)
整合 Prism 日誌和 IronPDF。
一起使用 Prism 和 IronPDF.
在 C# 專案中結合 Prism 與 IronPDF 開啟了一些令人興奮的可能性。 IronPDF 是將此內容轉換成 PDF 的絕佳工具,即使 Prism 也是處理日誌的好工具。 程式設計師可以建立應用程式,將項目記錄到自訂設計的 PDF 文件中,因為有了這種連線性。
使用 IronPDF 進行 Prism 日誌記錄。
透過建立一個使用 Prism Logs 的 Windows 主控台應用程式,使用者可以在您的程式中使用 Logs。 此控制項應適合放在控制台上,並預留足夠空間製作日誌。 新增伺服器日誌作業和 HTTP 日誌。
安裝 IronPDF。
- 開啟 Visual Studio 專案。
-
選擇"工具">"NuGet Package Manager">"Package Manager Console"。
- 在套件管理員控制台,鍵入下列指令並按 Enter:
Install-Package IronPdf
- 另一種安裝 IronPDF 的方法是使用 NuGet Package Manager for Solutions。
- 瀏覽搜尋結果中的 IronPDF 套件,選取該套件,然後按一下"安裝"按鈕。 Visual Studio 會自動處理下載與安裝。

- NuGet 將下載並安裝 IronPDF 套件以及專案所需的任何相依性。
- 安裝 IronPDF 之後,您就可以在專案中使用它。
透過 NuGet 網站安裝
請造訪 NuGet 網站上 https://www.nuget.org/packages/IronPdf 的 IronPDF 頁面,瞭解 IronPDF 的功能、相容性及其他下載選項。
利用 DLL 安裝
另外,您也可以使用 IronPDF 的 DLL 檔案,直接將 IronPDF 納入您的專案中。若要下載包含 DLL 的 ZIP 檔案,請點選此 連結。 解壓縮後,請將 DLL 包含在您的專案中。
實作邏輯
- 設置渲染器和記錄器:軟體設置 IronPDF 渲染器和 Prism 記錄器。 *記錄訊息:可以使用MessageLog()方法記錄具有指定類別和優先權的訊息。 在這個範例中,我們記錄應用程式的啟動和停止訊息,以及應用程式執行時發生的任何異常。
- 應用程式邏輯:應用程式邏輯的一部分由 PerformApplicationLogic() 方法模擬。 為了說明錯誤記錄,在此情況下,它只是產生一則訊息並提出異常。
- 建立 PDF 日誌報告:在執行應用程式邏輯之後,軟體會根據記錄的訊息建立 HTML 文件。 然後,它會使用 IronPDF 的 RenderHtmlAsPdf() 功能,將 HTML 文件轉換為 PDF 報告的記錄檔。 然後將 PDF 檔案儲存至磁碟。
擴充先前定義的程式碼,以整合 IronPDF 程式碼:
using IronPdf;
static void GeneratePdfLogReport()
{
var renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer
// Generate HTML content for PDF report
string htmlContent = "<h1>Log Report</h1><ul>";
foreach (var log in Loglst)
{
htmlContent += $"<li><strong>Message: {log.Message}</strong> Level: {log.Level}</li>";
}
htmlContent += "</ul>";
// Generate PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save PDF file
string filePath = "log_report.pdf";
pdfDocument.SaveAs(filePath);
Console.WriteLine($"PDF log report generated: {filePath}");
}
using IronPdf;
static void GeneratePdfLogReport()
{
var renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer
// Generate HTML content for PDF report
string htmlContent = "<h1>Log Report</h1><ul>";
foreach (var log in Loglst)
{
htmlContent += $"<li><strong>Message: {log.Message}</strong> Level: {log.Level}</li>";
}
htmlContent += "</ul>";
// Generate PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save PDF file
string filePath = "log_report.pdf";
pdfDocument.SaveAs(filePath);
Console.WriteLine($"PDF log report generated: {filePath}");
}
Imports IronPdf
Shared Sub GeneratePdfLogReport()
Dim renderer = New ChromePdfRenderer() ' Instantiates Chrome Renderer
' Generate HTML content for PDF report
Dim htmlContent As String = "<h1>Log Report</h1><ul>"
For Each log In Loglst
htmlContent &= $"<li><strong>Message: {log.Message}</strong> Level: {log.Level}</li>"
Next log
htmlContent &= "</ul>"
' Generate PDF document
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save PDF file
Dim filePath As String = "log_report.pdf"
pdfDocument.SaveAs(filePath)
Console.WriteLine($"PDF log report generated: {filePath}")
End Sub
以下是 IronPDF 產生的圖像日誌報告
的資料所產生的輸出 PDF。
要瞭解更多關於 IronPDF 程式碼的參考資訊,請參閱 這裡。
結論
Prism.Plugin.Logging 與 IronPDF 的整合可讓開發人員輕鬆地將廣泛的日誌功能整合至終端應用程式。開發人員可利用這兩種工具的功能,改善整體程式維護、優化除錯功能,並加快記錄作業的速度。 Prism.Plugin.Logging 可讓主控台應用程式獲得完整的日誌涵蓋範圍,透過正確的實作與設定,保證強大的監控與疑難排解能力。
IronPDF 提供永久許可證 Lite bundle,其中包括永久許可證、一年的軟體維護和庫升級。 IronPDF 提供用於開發目的的免費授權,但受時間和再散佈的限制。 若要取得 免費試用。 若要瞭解 Iron Software 各種產品的詳細資訊,請造訪他們的 網站連結。
常見問題解答
如何將日誌記錄集成到 .NET 控制台應用程式中?
您可以使用 Prism.Plugin.Logging 將日誌記錄集成到 .NET 控制台應用程式中,它支持各種日誌提供者並提供結構化的日誌框架。為設置它,安裝 Prism 日誌包、創建所需的日誌對象,並配置您的日誌目標和等級。
將 Prism Logging 與 IronPDF 結合的好處是什麼?
將 Prism Logging 與 IronPDF 結合,可讓您生成 PDF 日誌報告,增強應用程式維護和故障排除。IronPDF 可以將 HTML 日誌內容轉換為 PDF 文檔,提供一種便於審閱和共享日誌的可移植格式。
如何在 .NET 中將日誌數據轉換為 PDF 文檔?
要在 .NET 中將日誌數據轉換為 PDF 文檔,使用 IronPDF 將您的日誌數據渲染為 HTML,然後使用像 RenderHtmlAsPdf 這樣的方法將其轉換為 PDF。這允許您創建詳細且可移植的日誌報告。
哪些日誌提供者與 Prism.Plugin.Logging 兼容?
Prism.Plugin.Logging 與多個日誌提供者兼容,包括 NLog、Serilog 和 Microsoft.Extensions.Logging。這種靈活性允許開發者選擇最適合其專案需求的日誌提供者。
如何在 Visual Studio 中設置 Prism 日誌專案?
要在 Visual Studio 中設置 Prism 日誌專案,創建一個新的 C# 專案,使用 NuGet 包管理器安裝 Prism 日誌包,並通過創建 SyslogLogger 對象並配置日誌級別和目標來初始化日誌框架。
Prism.Plugin.Logging 可以用於自訂日誌配置嗎?
是的,Prism.Plugin.Logging 支持自訂日誌配置。您可以調整日誌級別、定義自訂日誌器,並將日誌信息路由到各種目的地,允許根據具體應用需求進行量身定制的日誌設置。



