跳至頁尾內容
.NET 幫助

Prism 日誌記錄(開發者使用指南)

儘管控制台應用程式沒有圖形使用者介面,但通常需要強大的日誌記錄機制來追蹤錯誤、監控應用程式效能並有效地偵錯問題。 Prism.Plugin.Logging是 Prism Logging 框架的擴展,為 .NET 應用程式提供全面的日誌記錄解決方案,包括對各種日誌記錄提供者的支援。

在本文中,我們將探討如何使用IronPDF (一個功能強大的 .NET 庫,用於處理 PDF 文件)將 Prism Logging 整合到控制台應用程式中。 透過結合這些工具,開發人員可以在控制台應用程式中實現高級日誌記錄功能,從而增強維護和故障排除能力。

Prism日誌記錄簡介

Prism.Plugin.Logging擴展了 Prism(一個用於建立 XAML 應用程式的流行框架),提供了全面的日誌記錄功能。 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. 根據需要呼叫 log 方法,並傳遞日誌訊息和日誌等級。
  5. 最後釋放日誌物件。

Prism Logs入門指南

在 C# 專案中設定 Prism

將 Prism 整合到 C# 專案中非常簡單。 要新增 Prism,必須使用微軟的 .NET 套件管理器 NuGet。 該庫提供了將 Prism Logs 整合到您的專案中所需的工具和庫。

Prism 日誌記錄(開發人員的使用方法):圖 1 - 使用 NuGet 套件管理員的搜尋列搜尋"Prism.Plugin.Logging.Loggly",然後選擇專案並點擊"安裝"按鈕,即可透過"管理解決方案的 NuGet 套件"安裝 Prism。

在 .NET 應用程式中實作 Prism

Prism 與多種 .NET 應用程式類型相容,包括 Windows 窗體 (WinForms) 和 Windows 主控台。 儘管每個框架的實現方式不同,但基本概念始終相同,即幫助我們記錄與您的應用程式相關的數據。

在 Visual Studio 中建立新項目

在 Visual Studio 應用程式中選擇"檔案"選單。 點擊"新建專案",然後選擇"控制台應用程式"。

Prism 日誌記錄(開發者使用方法):圖 2 - 開啟 Visual Studio 並選擇"新專案" - 選擇"控制台應用程式"

選擇檔案位置後,在指定的文字區域中輸入項目名稱。 然後,如下範例所示,按一下"建立"按鈕選擇所需的 .NET Framework。

![Prism 日誌記錄(開發人員的工作原理):圖 3 - 接下來,透過指定所需的項目名稱和位置來配置您的專案。 選擇與您的專案對應的 .NET Framework 版本,然後按一下"建立"按鈕。

所選應用程式將決定 Visual Studio 專案的組織方式。 只需打開 program.cs 檔案即可開始在應用程式中新增程式碼並進行建置。 您可以使用 Windows、控制台或 Web 應用程式。

之後,就可以新增庫並測試程式碼了。

Prism Logs 的基本應用範例

在下面的程式碼範例中,我們初始化 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; }
        }
    }
}
$vbLabelText   $csharpLabel

日誌報告由 Prism Logging 產生。 我們使用名為 Kiwi Syslog Service Manager 的工具來監控 Prism 日誌。

Prism 日誌檔輸出

Prism 日誌記錄(開發人員如何操作):圖 4 - 使用 Kiwi Syslog Service Manager 工具監控產生的 Prism 日誌報告。

Prism 日誌操作

可擴充日誌記錄

Prism.Plugin.Logging 的功能透過日誌記錄擴展,從而提供了更多的功能和靈活性。 它提供了一系列配置選項,可以調整日誌等級、日誌目標和其他變量,以滿足應用程式的日誌記錄需求。

多個日誌目標

使用 Prism.Plugin.Logging,您可以將日誌訊息路由到各種位置,包括控制台、檔案、資料庫和其他日誌服務。 由於這種靈活性,您可以根據應用程式的需求和環境選擇最佳的日誌記錄目標。

自訂日誌記錄器

借助該插件,您可以實作 Prism 的 ILoggerFacade 介面來建立自訂日誌記錄器。 這樣,您可以根據應用程式的需求建立自訂日誌記錄功能,或與第三方日誌記錄框架進行互動。

使用 Prism Logs 建立日誌

只需幾行程式碼即可輕鬆建立 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);
$vbLabelText   $csharpLabel

整合 Prism Logging 和 IronPDF

結合使用 Prism 和 IronPDF

在 C# 專案中將PrismIronPDF結合使用,可以帶來一些令人興奮的可能性。 IronPDF 是一個很棒的工具,可以將這些內容轉換為 PDF,儘管 Prism 是一個很棒的日誌處理工具。 由於這種連接性,程式設計師可以建立應用程序,將專案記錄到自訂設計的 PDF 文件中。

使用 IronPDF 進行 Prism 日誌記錄

透過建立利用 Prism 日誌的 Windows 控制台應用程序,使用者可以在您的程式內部與日誌進行互動。 這個控制項應該可以裝在控制台上,而且還有足夠的空間來記錄日誌。 新增伺服器日誌操作和HTTP日誌。

安裝 IronPDF

  • 開啟Visual Studio專案。
  • 選擇"工具">"NuGet 套件管理員">"套件管理員控制台"。

    • 在軟體包管理器控制台中,鍵入以下命令並按 Enter 鍵:
    Install-Package IronPdf
  • 安裝 IronPDF 的另一種方法是使用 NuGet 解決方案套件管理器。
    • 在搜尋結果中瀏覽 IronPDF 軟體包,選擇它,然後按一下"安裝"按鈕。 Visual Studio 將自動處理下載和安裝。

Prism 日誌記錄(開發人員的工作原理):圖 5 - 使用 NuGet 套件管理員的搜尋列中搜尋"IronPdf",然後選擇專案並點擊"安裝"按鈕,即可透過"管理解決方案的 NuGet 套件"安裝 IronPDF。

  • NuGet 將下載並安裝 IronPDF 套件以及專案所需的任何相依性。
  • IronPDF 安裝完成後,即可用於您的專案。

透過 NuGet 網站安裝

請造訪 IronPDF 頁面https://www.nuget.org/packages/IronPdf請造訪 NuGet 網站,以了解有關 IronPDF 的功能、相容性和其他下載選項的更多資訊。

利用 DLL 進行安裝

或者,您也可以使用 IronPDF 的 DLL 檔案將其直接整合到您的專案中。若要下載包含 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}");
}
$vbLabelText   $csharpLabel

以下是IronPDF產生的影像日誌報告。

Prism 日誌記錄(開發人員的工作原理):圖 6 - 使用 IronPDF 和 Prism 日誌報告資料產生的輸出 PDF。

要了解有關 IronPDF 代碼參考的更多信息,請點擊此處

結論

Prism.Plugin.LoggingIronPDF 的整合使開發人員能夠輕鬆地將強大的日誌記錄功能整合到終端應用程式中。透過利用這兩個工具的功能,開發人員可以提高程式的整體維護性、優化偵錯功能並加快日誌記錄操作。 Prism.Plugin.Logging 使控制台應用程式能夠獲得完整的日誌記錄覆蓋範圍,透過正確的實施和設置,保證強大的監控和故障排除能力。

IronPDF 提供Lite bundle的永久許可證,其中包括永久許可證、一年的軟體維護和庫升級。 IronPDF 提供免費的開髮用途許可,但對時間和再分發有限制。 取得免費試用版。 要了解有關 Iron Software 各種產品的更多信息,請訪問他們的網站連結。

常見問題解答

如何將日誌記錄功能整合到 .NET 控制台應用程式中?

您可以使用 Prism.Plugin.Logging 將日誌記錄功能整合到 .NET 控制台應用程式中。 Prism.Plugin.Logging 支援多種日誌記錄提供程序,並提供結構化的日誌記錄框架。若要進行設置,請安裝 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 支援自訂日誌配置。您可以調整日誌等級、定義自訂日誌記錄器,並將日誌訊息路由到不同的目標位置,從而實現滿足特定應用程式需求的客製化日誌設定。

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

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。