.NET 幫助

棱鏡日誌 (它對開發者的工作原理)

Kannaopat Udonpant
坎納帕特·烏頓潘
2024年4月29日
分享:

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

在本文中,我們探討如何將 Prism Logging 集成到控制台應用程式中,使用IronPDF,強大的 .NET 庫,用於處理 PDF 文件。 通過結合這些工具,開發人員可以在他們的控制臺應用程序中實現先進的日誌功能,從而增強維護和故障排除能力。

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. 在需要時調用日誌方法,並傳遞日誌消息和日誌級別。

  5. 在結尾處理日誌物件。

开始使用Prism Logs

在 C# 專案中設置 Prism

在 C# 專案中整合 Prism 很簡單。 使用 NuGet(Microsoft 的 .NET 套件管理器)是添加 Prism 所必需的。 此庫提供將 Prism Logs 整合到您的專案所需的工具和函式庫。

Prism 日誌記錄(給開發人員的工作原理):圖 1 - 在 NuGet 套件管理器的搜索欄中搜索 Prism.Plugin.Logging.Loggly,使用「管理 NuGet 套件」為解決方案安裝 Prism,然後選擇專案並點擊安裝按鈕。

在 .NET 應用程式中實作 Prism

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

在 Visual Studio 中建立新專案

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

稜鏡日誌記錄(開發人員如何使用):圖 2 - 打開 Visual Studio 並選擇 New Project - 選擇 Console App

在選定檔案位置後,在指定的文本區域輸入專案名稱。 然後,按照下面的範例所示,點擊「Create」按鈕以選擇必要的 .NET Framework。

Prism 日誌記錄(開發者如何使用): 圖 3 - 接下來,通過指定所需的專案名稱和位置來配置您的專案。 選擇對應的 .NET Framework 為您的專案,然後點擊「建立」按鈕。

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

之後,可以添加庫並測試代碼。

使用 Prism 的日誌基本範例。

在以下的程式碼範例中,我們啟動了 prism log 物件,然後依次將不同的記錄層級添加到 Prism 記錄中,並將所有記錄和重要性保存到一個列表中。

using Prism.Logging.Syslog;
class Program
{
    public class Demo
    {
        public string name { get; set; }
        public int age { get; set; }
        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 started.", Prism.Logging.Syslog.Level.Information);
        }
        static void PerformApplicationLogic()
        {
            // Example application logic
            Console.WriteLine("Performing application logic...");
            // Simulate error
            try
            {
                throw new Exception();// This will throw an exception
            }
            catch (Exception ex)
            {
                MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
            }
        }
        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;
class Program
{
    public class Demo
    {
        public string name { get; set; }
        public int age { get; set; }
        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 started.", Prism.Logging.Syslog.Level.Information);
        }
        static void PerformApplicationLogic()
        {
            // Example application logic
            Console.WriteLine("Performing application logic...");
            // Simulate error
            try
            {
                throw new Exception();// This will throw an exception
            }
            catch (Exception ex)
            {
                MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
            }
        }
        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; }
        }
    }
}

日誌報告由 Prism Logging 生成。 我們正在使用一個名為 Kiwi Syslog Service Manager 的工具來監控 prism 日誌。

輸出 Prism 日誌檔案

Prism 日誌(對開發人員的運作方式):圖 4 - 使用 Kiwi Syslog Service Manager 工具監控生成的 Prism 日誌報告。

稜鏡日誌操作

可擴展的日誌記錄

Prism.Plugin.Prism 的日誌功能透過 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(Message, _level);
static Options genOptions = new Options
{
        HostNameOrIp = "127.0.0.1",
        Port = 514,
        AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log(Message, _level);

整合Prism Logging和IronPDF

使用 Prism 與 IronPDF 一起

結合PrismIronPDF在 C# 專案中開啟了一些令人興奮的可能性。 IronPDF 是一個很棒的工具,可以將這些內容轉換為 PDF,儘管 Prism 是處理日誌的好工具。 由於此連接性,程式設計師可以創建將項目記錄到自定義設計的 PDF 文件的應用程式。

使用 IronPDF 的 Prism 日誌記錄

透過創建一個使用 Prism Logs 的 Windows 控制台應用程式,用戶可以在您的程式中與 Logs 互動。 此控制項應該可以輕鬆放置在控制台上,並留有充足的空間以進行記錄。 添加伺服器日誌操作和 HTTP 日誌。

安裝 IronPDF

  • 打開這個Visual Studio專案。
  • 選擇「工具」>「NuGet 套件管理器」>「套件管理員主控台」。

    • 在套件管理器主控台中,輸入以下命令並按下 Enter:
Install-Package IronPdf
  • 安裝 IronPDF 的另一種方式是使用 NuGet 套件管理器解決方案。

    • 在搜尋結果中瀏覽 IronPDF 套件,選擇它,然後點擊「安裝」按鈕。 Visual Studio 將自動處理下載和安裝。

    Prism 日誌 (對開發人員的運作方式):圖 5 - 通過在 NuGet 套件管理器的搜索欄中搜索「IronPdf」,使用管理 NuGet 套件安裝 IronPDF,然後選擇項目並單擊安裝按鈕。

  • NuGet 會下載並安裝 IronPDF 套件以及您的專案所需的任何相依性。
  • 一旦安裝了IronPDF,您就可以將其用於您的項目。

通過 NuGet 網站安裝

請訪問 NuGet 網站的 IronPDF 頁面 https://www.nuget.org/packages/IronPdf 以瞭解更多關於 IronPDF 的功能、兼容性和其他下載選項。

使用 DLL 進行安裝

或者,您可以通過使用 IronPDF 的 DLL 文件直接將其集成到您的項目中。要下載包含該 DLL 的 ZIP 文件,請點擊此處連結. 一旦解壓縮後,將 DLL 包含到您的專案中。

實施邏輯

  • 設定渲染器和日誌記錄器: 該軟體設置了IronPDF渲染器和Prism日誌記錄器。
  • 記錄訊息:可以使用 MessageLog 記錄具有指定類別和優先級的訊息。()** 方法。 在此範例中,我們記錄應用程式啟動和停止的消息,以及應用程式執行時出現的任何例外狀況。
  • 應用邏輯: 部分應用程式邏輯是由 PerformApplicationLogic 模擬的。()** 方法。 為了說明錯誤記錄,這個例子僅生成一個訊息並引發例外。
  • 創建 PDF 日誌報告: 執行應用程序邏輯後,軟體會根據記錄的訊息生成 HTML 文件。 然後使用IronPDF的RenderHtmlAsPdf() 將 HTML 文件轉換為 PDF 報告的日誌文件功能。 然後將 PDF 檔案儲存至磁碟。

    擴展先前定義的程式碼以整合IronPDF程式碼:

using IronPdf;
static void GeneratePdfLogReport(ChromePdfRenderer Renderer)
{
    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>{log.message}:</strong> {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(ChromePdfRenderer Renderer)
{
    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>{log.message}:</strong> {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}");
}

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

Prism Logging(運作原理):圖 6 - 使用 IronPDF 和 Prism 記錄報告中的數據生成的輸出 PDF。

若要了解更多關於 IronPDF 程式碼參考的資訊,請參考這裡.

結論

Prism.Plugin.Logging集成與IronPDF允許開發人員輕鬆將廣泛的日誌功能集成到終端應用程式中。開發人員可以通過利用這兩個工具的功能來改進整體程序維護、優化除錯能力並加速日誌操作。 Prism.Plugin.Logging 使控制台應用程式能夠獲得完整的日誌覆蓋,確保穩健的監控和故障排除功能,前提是正確的實施和設置。

IronPDF 提供一個 perpetual license 的 $749 Lite 套裝,它包含永久許可證、一年的軟體維護以及庫的升級。 IronPDF 提供免費的開發許可,但受時間和重發限制。 獲得免費試用. 如需了解更多有關 Iron Software 各種產品的資訊,請訪問他們的網站連結

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
TCP .NET(如何為開發人員工作)
下一個 >
Npgsql C#(開發人員如何使用)