跳至頁尾內容
開發者更新

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

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

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

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. 在需要時調用日誌方法,並傳遞日誌消息和日誌等級。
  5. 在結束時銷燬日誌物件。

開始使用Prism日誌

Setting up Prism in C# Projects

將Prism整合到一個C#專案很容易。 使用NuGet,微軟的.NET包管理器以新增Prism是必要的。 這個庫提供了將Prism日誌整合到您的項目中所需的工具和庫。

Prism日誌(對開發人員的工作原理):圖1 - 使用NuGet包管理器管理解決方案來安裝Prism,通過在NuGet包管理器的搜索欄中搜索"Prism.Plugin.Logging.Loggly"選擇專案並點擊安裝按鈕。

在.Dot .NET應用中實現Prism

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

在Visual Studio中建立新專案

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

Prism日誌(對開發人員的工作原理):圖2 - 打開Visual Studio並選擇

選擇文件位置後,在指定文字區域中輸入專案名稱。 然後,可以像下面的範例一樣,通過單擊建立按鈕,選擇必要的.NET Framework。

Prism日誌(對開發人員的工作原理):圖3 - 接下來,配置您的專案,指定所需的專案名稱和位置。 為您的專案選擇相應的.NET Framework,然後點擊建立按鈕。

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

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

使用Prism日誌的基本範例

在下面的程式碼範例中,我們初始化了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; }
        }
    }
}
Imports Prism.Logging.Syslog
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

Friend Class Program
	Public Class Demo
		Public Property Name() As String
		Public Property Age() As Integer

		' Configure the logger options
		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 stopped.", 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("Simulated Exception")
			Catch ex As Exception
				MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error)
			End Try
		End Sub

		' Logs messages and their levels
		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
$vbLabelText   $csharpLabel

日誌報告是從Prism日誌中生成的。 我們正在使用名為Kiwi Syslog服務管理器的工具來監控Prism日誌。

輸出Prism日誌文件

Prism日誌(對開發人員的工作原理):圖4 - 使用Kiwi Syslog服務管理器工具監控生成的Prism日誌報告。

Prism日誌的操作

可擴展的日誌

Prism.Plugin.Logging的能力擴展了日誌功能,提供更多的功能性和靈活性。 它提供了一系列配置選項來調整日誌等級,日誌目標和其他變數,以滿足您應用的日誌需求。

多重日誌目標

您可以使用Prism.Plugin.Logging將日誌消息路由到多種位置,包括控制台,文件,資料庫和其他日誌服務。 由於這種靈活性,您可以為您的應用需求和環境選擇最佳的日誌目標。

自訂日誌器

使用該插件,您可以實現Prism的ILoggerFacade介面來建構自訂日誌器。 這讓您可以根據應用程式需求或第三方日誌框架構建自訂日誌功能。

使用Prism日誌建立日誌

只需幾行程式碼即可輕鬆建立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);
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("Sample message", Prism.Logging.Syslog.Level.Information)
$vbLabelText   $csharpLabel

整合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包管理器的搜索欄中搜尋

  • NuGet將下載並安裝IronPDF包及專案所需的任何依賴項。
  • 安裝IronPDF後,您就可以將其用於您的專案。

通過NuGet網站安裝

存取NuGet網站的https://www.nuget.org/packages/IronPdf上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()
{
    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}");
}
Imports IronPdf

Shared Sub GeneratePdfLogReport()
	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>Message: {log.Message}</strong> Level: {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
$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 日誌記錄套件,建立必要的日誌記錄物件,並配置日誌目標和級別。

將 Prism 日誌記錄與 IronPDF 結合使用有什麼好處?

將 Prism 日誌記錄與 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 Package Manager 安裝 Prism 日誌記錄套件,並通過建立 SyslogLogger 物件和配置日誌級別與目標來初始化日誌記錄框架。

Prism.Plugin.Logging 可以用於自定義日誌配置嗎?

是的,Prism.Plugin.Logging 支持自定義日誌配置。您可以調整日誌級別、定義自定義日誌記錄器,並將日誌消息路由到不同的目的地,以便滿足特定應用程式需求的量身定制日誌設置。

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

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話