.NET 帮助

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

发布 2024年四月29日
分享:

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

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

Prism 日志简介

Prism.Plugin.Logging Prism.Plugin.Logging提供全面的日志记录功能,从而扩展了用于构建XAML应用程序的流行框架Prism。Prism.Plugin.Logging支持NLog、Serilog和Microsoft.Extensions.Logging等多种日志提供程序,可提供灵活的自定义选项,以满足各种应用程序的要求。

使用棱镜日志的优势

灵活的日志配置: Prism.Plugin.Logging允许开发人员无缝配置各种日志提供者,包括NLog、Serilog和Microsoft.Extensions.Logging等流行选项。

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

如何使用棱镜日志

1.创建一个新的 C# 项目

2.安装 Prism 日志软件包。

3.为 SyslogLogger 创建一个对象,并将配置作为参数传递。

4.在需要时调用日志方法,并传递日志信息和日志级别。

5.最后处置日志对象。

Prism 日志入门

在 C&num 中设置 Prism;项目

在 C# 项目中集成 Prism 非常简单。要添加 Prism,必须使用微软的 .NET 软件包管理器 NuGet。该库提供了将 Prism 日志纳入项目所需的工具和库。

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

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

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

在 Visual Studio 中创建新项目

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

Prism Logging(如何为开发人员工作):图 2 - 打开 Visual Studio 并选择 "新建项目"- 选择 "Console App";

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

Prism 日志(如何为开发人员工作):图 3 - 接下来,通过指定所需的项目名称和位置来配置项目。为项目选择相应的 .NET Framework,然后点击 "Create" 按钮。

选择的应用程序将决定 Visual Studio 项目的组织方式。只需打开 program.cs 文件,即可开始为应用程序添加代码并构建它。您可以使用 Windows、控制台或网络应用程序。

之后,就可以添加程序库并测试代码了。

使用 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 日志生成。我们使用名为 Kiwi Syslog 服务管理器的工具来监控棱镜日志。

输出棱镜日志文件

Prism 日志(如何为开发人员工作):图 4 - 使用 Kiwi 系统日志服务管理器工具监控生成的 Prism 日志报告。

棱镜日志操作

可扩展日志记录

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

多个日志目标

通过Prism.Plugin.Logging,您可以将日志信息发送到各种位置,包括控制台、文件、数据库和其他日志服务。由于这种灵活性,您可以根据应用程序的要求和环境选择最佳日志目标。

定制记录仪

使用该插件,您可以实现 Prism 的 ILoggerFacade 接口来构建自定义日志记录器。这样,您就可以根据应用程序的需要构建自定义日志记录功能,或与第三方日志记录框架对接。

使用棱镜日志创建日志

只需几行代码就能轻松创建 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 日志和 IronPDF

同时使用 Prism 和 IronPDF

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

使用 IronPDF 进行 Prism 日志记录

通过创建一个使用 Prism 日志的 Windows 控制台应用程序,用户可以在程序中使用日志。该控件应放在控制台上,并留出足够的空间来制作日志。添加服务器日志操作和 HTTP 日志。

安装 IronPDF

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

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

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

Prism Logging(如何为开发人员工作):图 5 - 在 NuGet 包管理器的搜索栏中搜索 "IronPdf",使用管理解决方案的 NuGet 包来安装 IronPDF,然后选择项目并点击安装按钮。

  • 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(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 日志(如何为开发人员工作):图 6 - 使用 IronPDF 和 Prism 日志报告中的数据生成的 PDF 输出。

要了解有关 IronPDF 代码的更多信息,请参阅 这里.

结论

Prism.Plugin.LoggingIronPDF 允许开发人员在终端应用程序中轻松集成大量日志功能。开发人员可以利用这两种工具的功能,改善整体程序维护,优化调试能力,加快日志记录操作。通过正确的实施和设置,Prism.Plugin.Logging 可使控制台应用程序获得完整的日志记录覆盖范围,确保强大的监控和故障排除能力。

IronPDF 提供价值 749 美元的 Lite 捆绑永久许可证,其中包括永久许可证、一年的软件维护和库升级。IronPDF 为开发目的提供免费许可,但有时间和再分发限制。要获得 免费试用.要了解有关 Iron Software 各类产品的更多信息,请访问他们的 网站 链接。

< 前一页
TCP .NET(如何为开发人员工作)
下一步 >
Npgsql C#(开发人员工作原理)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,746,704 查看许可证 >