.NET幫助 Prism Logging(對於開發者的運行原理) Curtis Chau 更新日期:7月 28, 2025 Download IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 主控台應用程式即使沒有圖形用戶介面,通常仍需要可靠的日誌機制來追蹤錯誤、監控應用程式效能並有效地偵錯。 Prism.Plugin.Logging作為Prism Logging框架的擴展,為.NET應用程式提供全面的日誌解決方案,包括對各種日誌提供者的支援。 在本文中,我們探討如何使用IronPDF將Prism Logging整合到主控台應用程式中。IronPDF是一個強大的.NET庫,用於處理PDF文件。 通過結合這些工具,開發人員可以在其主控台應用程式中實施先進的日誌功能,增強維護和故障排除能力。 Prism Logging簡介 Prism.Plugin.Logging透過提供全面的日誌能力擴展了Prism,一個熱門的構建XAML應用程式的框架。 Prism.Plugin.Logging支援多個日誌提供者,如NLog、Serilog和Microsoft.Extensions.Logging,提供靈活性和定制選項以適應各種應用程式需求。 使用Prism logging的優勢 靈活的日誌配置:Prism.Plugin.Logging允許開發人員無縫配置各種日誌提供者,包括受歡迎的選項如NLog、Serilog和Microsoft.Extensions.Logging。 結構化日誌支援:開發人員可以使用Prism.Plugin.Logging記錄具有結構的數據及其消息。 此功能在涉及主控台應用程式的場景中特別有用,因為需要記錄並添加到由IronPDF生成的日誌報告中的完整上下文數據,包括時間戳、錯誤代碼或用戶活動。 如何使用Prism logging 創建一個新的 C# 專案 安裝Prism logging套件。 為SyslogLogger創建一個對象並將配置作為參數傳遞。 在需要時調用日誌方法,並傳遞日誌消息和日誌級別。 在結束時處置日誌對象。 開始使用Prism Logs 在C#項目中設置Prism 將Prism集成到C#項目中很簡單。 需要使用NuGet,這是微軟的.NET套件管理器,以便添加Prism。 這個庫提供了將Prism Logs集成到項目中所需的工具和庫。 在Dot .NET應用程式中實現Prism Prism與許多Dot .NET應用程式類型兼容,包括Windows Forms (WinForms)和Windows Console。 儘管每個框架的實現方式不同,但基本概念始終相同,幫助我們記錄與您的應用程式相關的數據。 在 Visual Studio 中創建一個新項目 選擇Visual Studio應用程式上的文件菜單。 點擊「新建項目」,然後選擇「主控台應用程式」。 在選擇文件位置後,在指定的文本區域輸入項目名稱。 然後,如下所示示例中,選擇所需的.NET框架,然後點擊創建按鈕。 所選應用程式然後將決定Visual Studio項目的組織方式。 只需打開program.cs文件即可開始向應用程式添加代碼並構建它。 您可以使用Windows、控制台或Web應用程式。 之後,可以添加庫並測試代碼。 使用Prism Logs的基本示例 在下面的代碼示例中,我們初始化了Prism日誌對象,然後將不同的日誌級別一個接一個地添加到Prism日誌中,將所有日誌及其重要性保存到列表中。 日誌報告由Prism Logging生成。 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 $vbLabelText $csharpLabel 我們使用一個名為Kiwi Syslog Service Manager的工具來監控Prism日誌。 #### 輸出Prism Log文件 Prism Logs操作 可擴展日誌 Prism.Plugin.Logging的功能通過日誌進行擴展,提供更多功能和靈活性。 它提供了一系列配置選項,以調整日誌級別、日誌目標和其他變量,以滿足您的應用程式的日誌需求。 #### 多種日誌目標 您可以使用Prism.Plugin.Logging將日誌消息路由到多個位置,包括控制台、文件、數據庫和其他日誌服務。 由於這種靈活性,您可以選擇最適合應用程式需求和環境的日誌目標。 #### 自定義日誌器 使用插件,您可以實現Prism的ILoggerFacade介面來構建自定義日誌器。 這讓您可以根據應用程式的需求或集成第三方日誌框架構建自定義日誌功能。 #### 使用Prism Logs創建日誌 使用幾行代碼可以輕鬆創建Prism日誌。 下面是創建日誌的範例。 ## 整合Prism Logging和IronPDF 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) $vbLabelText $csharpLabel 同時使用Prism和IronPDF 在C#項目中結合IronPDF,開啟了一些令人興奮的可能性。 Combining Prism with IronPDF in a C# project opens some exciting possibilities. 由於這種連接,開發人員可以創建將項目記錄到自定義設計的PDF文檔中的應用程式。 #### Prism Logging與IronPDF 通過創建一個利用Prism Logs的Windows主控台應用程式,使用者可以在您的程式中與日誌進行交互。 這個控制項應該適合主控台,且留有足夠的空間來製作日誌。 添加伺服器日誌操作和HTTP日誌。 * 開啟Visual Studio項目。 安裝 IronPDF 在套件管理器主控台中鍵入以下命令,然後按Enter: 選擇“工具” > “NuGet 套件管理器” > “套件管理器控制台”。 另一種安裝IronPDF的方法是使用NuGet套件管理器進行解決方案。 Install-Package IronPdf 在搜尋結果中瀏覽IronPDF套件,選擇它,然後點擊「安裝」按鈕。 Visual Studio 將自動處理下載和安裝。 NuGet將下載並安裝IronPDF套件以及您的項目所需的任何相依性。 一旦IronPDF安裝完成,您就可以在項目中使用它。 訪問NuGet網站上的https://www.nuget.org/packages/IronPdf IronPDF頁面,以了解有關IronPDF的功能、兼容性和其他下載選項的更多信息。 通過 NuGet 網站安裝 或者,您可以通過使用其DLL文件直接集成IronPDF到您的項目中。要下載包含DLL的ZIP文件,請點擊這個鏈接。 使用 DLL 安裝 解壓縮後,將DLL包括在您的項目中。 ## 實現邏輯 設置渲染器和日誌:軟件設置IronPDF渲染器和Prism日誌。 登記消息:可以使用帶有指定類別和優先級的MessageLog()方法記錄消息。 在例子中,我們記錄應用程式的開始和關閉消息以及應用程式在執行期間產生的任何異常。 應用邏輯:一部分應用程式邏輯由PerformApplicationLogic()方法模擬。 為了示範錯誤登記,它僅僅產生一個消息並在這種情況下引起一個異常。 創建PDF日誌報告:應用程式邏輯執行後,軟件根據記錄的消息創建一個HTML文檔。 然後使用IronPDF的RenderHtmlAsPdf()功能將HTML文檔轉換為日誌文件作為PDF報告。 接著,將PDF文件保存到磁碟。 擴展先前定義的代碼以集成IronPDF代碼: 以下是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 $vbLabelText $csharpLabel 若要了解有關IronPDF代碼引用的更多信息,請參閱這裡。 IronPDF的集成允許開發人員輕鬆將廣泛的日誌功能集成到終端應用程式中。開發人員可以通過利用這兩種工具的功能來提高整體程式維護性,優化調試能力並加速日誌操作。 結論 Prism.Plugin.Logging integration with Prism.Plugin.Logging使主控台應用程式能夠獲得完整的日誌覆蓋,確保強大的監控和故障排除能力,前提是正確的實現和設置。 IronPDF提供一個Lite bundle的永久許可證,包括永久許可證、一年的軟件維護以及庫的升級。 IronPDF為開發目的提供免費的許可證,限於時間和再發行限制。 獲得免費試用。 如需了解更多有關Iron Software各種產品的信息,請訪問他們的網站鏈接。 To find out more about the various Iron Software products, please visit their website link. 常見問題解答 如何將日誌記錄集成到 .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 支持自訂日誌配置。您可以調整日誌級別、定義自訂日誌器,並將日誌信息路由到各種目的地,允許根據具體應用需求進行量身定制的日誌設置。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 更新日期 9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新日期 9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 更新日期 8月 5, 2025 C#開關模式匹配(對開發者來說是如何工作的) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 TCP .NET(對於開發者的運行原理)Npgsql C#(對於開發者的運...