.NET 幫助

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

發佈 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; }
        }
    }
}
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 日誌檔案

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 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}");
}
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.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >