.NET 幫助

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

發佈 2024年4月29日
分享:

儘管控制台應用程式沒有圖形用戶界面,但通常需要強大的日誌機制來追踪錯誤、監控應用程序性能以及高效地調試問題。 Prism.Plugin.LoggingPrism Logging框架的擴展,為.NET應用程式提供了全面的日誌解決方案,包括對各種日誌提供商的支援。

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

Prism 日誌記錄介紹

Prism.Plugin.Logging 擴展了Prism,一個流行的XAML應用程式構建框架,提供全面的日誌記錄功能。透過支援多個日誌記錄提供者如NLog、Serilog和Microsoft.Extensions.Logging,Prism.Plugin.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

在 C# 專案中設定 Prism

將 Prism 整合到 C# 專案中非常簡單。利用 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 框架。

Prism 記錄(如何為開發者工作):圖 3 - 接下來,通過指定所需的專案名稱和位置來配置您的專案。選擇相應的 .NET 框架,然後點擊“建立”按鈕。

選定的應用程式將決定 Visual Studio 專案的組織方式。只需打開 program.cs 文件即可開始向應用程式中添加程式碼並構建它。您可以使用 Windows、控制台或 Web 應用程式。

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

使用 Prism 日誌的基本範例

在下面的程式碼範例中,我們啟動了 prism 日誌對象,然後逐一將不同的日誌級別添加到 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; }
        }
    }
}
Imports Prism.Logging.Syslog
Friend Class Program
	Public Class Demo
		Public Property name() As String
		Public Property age() As Integer
		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 started.", 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() ' This will throw an exception
			Catch ex As Exception
				MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error)
			End Try
		End Sub
		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
VB   C#

日誌報告是由Prism Logging生成的。我們使用一個名為Kiwi Syslog Service Manager的工具來監控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);
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(Message, _level)
VB   C#

整合Prism Logging和IronPDF

一起使用 Prism 和 IronPDF

結合 PrismIronPDF 在C#專案中開啟了一些令人興奮的可能性。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 網站安裝

訪問 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}");
}
Imports IronPdf
Shared Sub GeneratePdfLogReport(ByVal Renderer As ChromePdfRenderer)
	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>{log.message}:</strong> {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
VB   C#

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

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

若要了解更多 IronPDF 程式碼參考,請參考 這裡.

結論

Prism.Plugin.Logging 集成與 IronPDF 允許開發者輕鬆地將廣泛的日誌記錄功能整合到終端應用程式中。開發者可以利用這些工具的功能來改善整體程序維護、優化除錯能力,並加快日誌記錄操作。Prism.Plugin.Logging 讓控制台應用程式能夠獲得完整的日誌記錄覆蓋,確保強大的監控和故障排除能力,前提是具有正確的實施和設置。

IronPDF提供749美元的永久許可Lite組合,該組合包含永久許可、一年的軟件維護和庫升級。IronPDF為開發用途提供免費許可,但受時間和再分發限制。要獲取 免費試用如需了解更多有關各種 Iron Software 產品的資訊,請訪問他們的 網站 連結

< 上一頁
TCP .NET(如何為開發人員工作)
下一個 >
Npgsql C#(開發人員如何使用)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >