.NET 帮助

棱镜日志记录(开发者如何使用)

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

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

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 日志入门

在 C# 项目中设置 Prism

将Prism集成到C#项目中很简单。 使用 NuGet(微软的 .NET 包管理器)是添加 Prism 所必需的。 该库提供了将 Prism Logs 纳入项目所需的工具和库。

Prism 日志(开发人员如何使用):图1 - 使用 NuGet 包管理器中的“解决方案的管理 NuGet 包”安装 Prism,在搜索栏中搜索“Prism.Plugin.Logging.Loggly”,然后选择项目并点击安装按钮。

在 .NET 应用程序中实现 Prism

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

在 Visual Studio 中创建新项目

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

Prism Logging(开发者的工作原理):图2 - 打开Visual Studio并选择“新建项目” - 选择“控制台应用”

在选择文件位置后,在指定的文本区域输入项目名称。 然后,如下面的示例所示,点击“创建”按钮,选择必要的.NET Framework。

![棱镜日志记录(开发人员如何使用):图3 - 接下来,通过指定所需的项目名称和位置来配置项目。 为您的项目选择相应的.NET Framework,并点击“创建”按钮。

所选应用程序将决定 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
$vbLabelText   $csharpLabel

日志报告是由Prism Logging生成的。 我们正在使用一种名为Kiwi Syslog Service Manager的工具来监控prism日志。

输出棱镜日志文件

Prism Logging(它如何为开发者工作):图4 - 使用Kiwi Syslog Service Manager工具监控生成的Prism日志报告。

棱镜日志操作

可扩展日志记录

Prism.Plugin.Prism的日志功能通过日志记录得到了扩展,从而提供了更多的功能和灵活性。 它提供了一系列配置选项,可以调整日志级别、日志目标和其他变量,以满足应用程序的日志记录需求。

多个日志目标

您可以使用 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)
$vbLabelText   $csharpLabel

集成 Prism 日志和 IronPDF

将 Prism 和 IronPDF 一起使用

在 C# 项目中将PrismIronPDF结合使用可以带来一些令人兴奋的可能性。 IronPDF 是一个用于将此内容转换为 PDF 的绝佳工具,尽管 Prism 是处理日志的好工具。 由于这种连通性,程序员可以创建将条目记录到自定义设计的PDF文档中的应用程序。

使用IronPDF进行Prism日志记录

通过创建一个使用Prism Logs的Windows控制台应用程序,用户可以在程序内部与日志进行交互。 该控件应适合在控制台上运行,并留有足够的空间记录日志。 添加服务器日志操作和HTTP日志。

安装 IronPDF

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

    • 在软件包管理器控制台中,键入以下命令并按 Enter:
Install-Package IronPdf
Install-Package IronPdf
SHELL
  • 另一种安装 IronPDF 的方法是使用 NuGet 包管理器来管理解决方案。

    • 浏览搜索结果中的 IronPdf 软件包,选择它,然后点击 "安装 "按钮。 Visual Studio 将自动处理下载和安装。

    Prism Logging(开发人员如何使用):图 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
$vbLabelText   $csharpLabel

下面是由IronPDF生成的图像日志报告

Prism Logging(开发人员如何使用):图6 - 使用IronPDF和来自Prism Log Report的数据生成的输出PDF。

要了解更多关于IronPDF代码参考的信息,请点击此处

结论

Prism.Plugin.LoggingIronPDF的集成使开发者能够轻松将广泛的日志记录功能集成到终端应用程序中。通过利用这两种工具的功能,开发者可以改进整体程序维护,优化调试功能,并加速日志操作。 Prism.Plugin.Logging 使控制台应用程序能够获得全面的日志记录覆盖,确保通过正确的实现和设置实现强大的监控和故障排除功能。

IronPDF 提供了 $749 Lite 套餐的永久许可证,包括永久许可证、一年的软件维护以及库的升级。 IronPDF提供用于开发目的的免费许可,但受到时间和再分发的限制。 获取免费试用。 有关Iron Software各种产品的更多信息,请访问他们的网站链接。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
TCP .NET(如何为开发人员工作)
下一步 >
Npgsql C#(开发人员工作原理)