跳過到頁腳內容
.NET幫助

Prism Logging(對於開發者的運行原理)

控制台應用程式儘管沒有圖形使用者介面,但通常需要健全的記錄機制來跟蹤錯誤、監視應用程式性能並有效地調試問題。 Prism.Plugin.Logging 是 Prism Logging 架構的擴展,提供針對 .NET 應用程式的全面記錄解決方案,包括對各種記錄提供者的支援。

在這篇文章中,我們探索如何使用 IronPDF 將 Prism Logging 整合到控制台應用程式中,這是一個強大的 .NET 程式庫,用於處理 PDF 文件。 通過結合這些工具,開發者可以在其控制台應用程式中實現高級記錄功能,增強維護和故障排除能力。

Prism Logging 簡介

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. 在結束時處理 log 對象。

開始使用 Prism Logs

Setting up Prism in C# Projects

將 Prism 集成到 C# 專案中很容易。 需要利用 NuGet,Microsoft 的 .NET 包管理器來添加 Prism。 這個程式庫提供了將 Prism 日誌集成到您的專案中所需的工具和庫。

Prism Logging(它是如何為開發者工作的):圖 1 - 使用 NuGet 套件管理器的解決方案安裝 Prism,通過在 NuGet 套件管理器的搜索欄中搜索

在 Dot .NET 應用程式中實現 Prism

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

在 Visual Studio 中創建新專案

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

Prism Logging(它是如何為開發者工作的):圖 2 - 開啟 Visual Studio 並選擇

在選擇檔案位置後,輸入專案名稱至指定的文本區域中。 然後,如下圖所示,點擊創建按鈕選擇所需的 .NET Framework。

Prism Logging(它是如何為開發者工作的):圖 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 Logging(它是如何為開發者工作的):圖 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 Logging

通過創建使用 Prism Logs 的 Windows 控制台應用程式,用戶可以在您的程式中與日誌互動。 此控件應適合控制台,並且在製作日誌時應留下充足餘地。 添加伺服器日誌操作和 HTTP 日誌。

安裝 IronPDF

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

    • 在套件管理器控制台中,輸入以下命令然後按 Enter:
    Install-Package IronPdf
  • 另一種安裝 IronPDF 的方式是使用 NuGet 套件管理器進行解決方案。
    • 在搜尋結果中查閱 IronPDF 套件,選擇它,然後點擊"安裝"按鈕。 Visual Studio 將自動處理下載和安裝。

Prism Logging(它是如何為開發者工作的):圖 5 - 使用 NuGet 套件管理器的解決方案安裝 IronPDF,透過在 NuGet 套件管理器的搜尋欄中搜尋

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

通過 NuGet 網站安裝

訪問 NuGet 網站上的 IronPDF 頁面 https://www.nuget.org/packages/IronPdf 以了解有關 IronPDF 的功能、兼容性及其他下載選項的更多信息。

利用 DLL 安裝

另外,您可以透過其 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}");
}
$vbLabelText   $csharpLabel

以下是 IronPDF 生成的圖像日誌報告

Prism Logging(它是如何為開發者工作的):圖 6 - 使用 IronPDF 及來自 Prism 日誌報告的數據生成的輸出 PDF。

要了解有關 IronPDF 程式碼參考的更多信息,請參考這裡

結論

Prism.Plugin.LoggingIronPDF 的整合讓開發者能輕鬆地在終端應用中加入廣泛的記錄功能。開發者可以藉由利用這兩個工具的功能來提高整體程式維護、優化調試能力並加快記錄操作。 通過正確的實現和設置,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 支持自訂日誌配置。您可以調整日誌級別、定義自訂日誌器,並將日誌信息路由到各種目的地,允許根據具體應用需求進行量身定制的日誌設置。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

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

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me