跳至页脚内容
.NET 帮助

Prism Logging(开发人员如何使用)

控制台应用程序尽管缺乏图形用户界面,却经常需要强大的日志记录机制来跟踪错误、监测应用程序性能,并有效地调试问题。 Prism.Plugin.Logging 是Prism 日志框架的扩展,提供了一个全面的日志解决方案,支持各种日志提供程序,包括 .NET 应用程序。

在本文中,我们探讨如何将 Prism Logging 集成到控制台应用程序中,使用IronPDF,一个强大的 .NET 库,用于处理 PDF 文档。 通过结合这些工具,开发人员可以在他们的控制台应用程序中实现高级日志功能,增强维护和排错能力。

Prism Logging 介绍

Prism.Plugin.Logging 通过提供全面的日志功能扩展了Prism,这是一个流行的 XAML 应用程序构建框架。 通过支持NLog、Serilog和Microsoft.Extensions.Logging等多个日志提供商,Prism.Plugin.Logging 提供了灵活性和自定义选项以满足各种应用程序需求。

使用 Prism Logging 的好处

灵活的日志配置:Prism.Plugin.Logging 允许开发人员不费力地配置各种日志提供商,包括NLog、Serilog 和 Microsoft.Extensions.Logging。

结构化日志支持:开发人员可以使用Prism.Plugin.Logging 记录带有消息的结构化数据。 这种功能在涉及控制台应用程序的场景中尤其有用,其中必须记录和添加包括时间戳、错误代码或用户活动在内的全面上下文数据到由 IronPDF 生成的日志报告中。

如何使用 Prism Logging

  1. 创建一个新的 C# 项目
  2. 安装 Prism Logging 包。
  3. 创建一个传递配置作为参数的 SyslogLogger 对象。
  4. 在需要时调用日志方法并传递日志消息和日志级别。
  5. 在结束时处置日志对象。

开始使用 Prism 日志

在 C# 项目中设置 Prism

将 Prism 集成到 C# 项目中很简单。 利用 NuGet——微软的 .NET 包管理器来添加 Prism 是必要的。 该库提供了集成 Prism Logs 到您的项目中的工具和库。

Prism Logging (How It Works For Developers): Figure 1 - 使用解决方案的 Manage NuGet Package 安装 Prism ,在 NuGet Package Manager 的搜索栏中搜索 "Prism.Plugin.Logging.Loggly",然后选择项目并单击安装按钮。

在 Dot .NET 应用程序中实现 Prism

Prism 兼容多种 Dot .NET 应用程序类型,包括 Windows Forms (WinForms) 和 Windows 控制台。 尽管每种框架的实现方式不同,但基本概念始终相同,帮助我们记录与您的应用程序相关的数据。

在 Visual Studio 中创建新项目

选择 Visual Studio 应用程序中的“文件”菜单。 点击“新建项目”,然后选择“控制台应用程序”。

Prism Logging (How It Works For Developers): Figure 2 - 打开 Visual Studio 并选择“新建项目”- 选择“控制台应用”

在选择文件位置后,在指定的文本区域中输入项目名称。 然后,如下图示例中所示,通过单击创建按钮选择所需的 .NET Framework。

Prism Logging (How It Works For Developers): Figure 3 - 下一步,通过指定所需的项目名称和位置来配置您项目。 选择您项目相应的 .NET 框架并单击“创建”按钮。

然后所选应用程序将决定 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; }
        }
    }
}
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 Logging 生成日志报告。 我们使用一个名为 Kiwi Syslog Service Manager 的工具来监控 Prism 日志。

输出 Prism 日志文件

Prism Logging (How It Works For Developers): Figure 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);
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

Combining Prism with IronPDF in a C# project opens some exciting possibilities. 尽管 Prism 是用于处理日志的很好的工具,但 IronPDF 是将内容转换为 PDF 的一个出色的工具。 由于这种连接,程序员可以创建应用程序,将项目记录到自定义设计的 PDF 文档中。

使用 Prism Logging 和 IronPDF

通过创建一个使用 Prism Logs 的 Windows 控制台应用程序,用户可以在您的程序中参与日志。 该控制台上应该有足够的空间来生成日志。 添加服务器日志操作和 HTTP 日志。

安装 IronPDF。

  • 打开 Visual Studio 项目。
  • 选择“工具”>“NuGet包管理器”>“包管理器控制台”。

    • 在包管理器控制台中,输入以下命令并按 Enter:
    Install-Package IronPdf
  • 另一种安装 IronPDF 的方法是使用解决方案的 NuGet 包管理器。
    • 在搜索结果中浏览 IronPDF 包,选择它,然后单击“安装”按钮。 ### 4.2 使用NuGet包管理器控制台安装

Prism Logging (How It Works For Developers): Figure 5 - 使用解决方案的 Manage NuGet Package 安装 IronPDF ,在 NuGet Package Manager 的搜索栏中搜索 "IronPdf",然后选择项目并单击安装按钮。

  • 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}");
}
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 Logging (How It Works For Developers): Figure 6 - 使用 IronPDF 和 Prism 日志报告数据生成的输出 PDF。

有关 IronPDF 代码参考的更多信息,请参阅 这里

结论

Prism.Plugin.Logging integration with IronPDF 的集成使开发人员能够轻松地将广泛的日志功能集成到终端应用程序中。利用这两个工具的功能,开发人员可以提高整体程序维护性、优化调试能力、并加快日志记录操作。 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 支持自定义日志配置。您可以调整日志级别,定义自定义记录器,并将日志消息路由到不同的目的地,从而创建满足特定应用程序要求的定制日志设置。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。