.NET 帮助

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

Kannaopat Udonpant
坎那帕·乌东攀
2024年四月29日
分享:

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

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

Prism 日志介绍

Prism.Plugin.Logging通过提供全面的日志功能,扩展流行的XAML应用程序框架Prism。 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 Logging(如何为开发人员工作):图 1 - 在 NuGet 包管理器的搜索栏中搜索"Prism.Plugin.Logging.Loggly",使用管理解决方案的 NuGet 包来安装 Prism,然后选择项目并点击安装按钮。

在 .NET 应用程序中实现 Prism

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

在 Visual Studio 中创建新项目

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

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

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

Prism 日志记录(如何为开发人员服务):图 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; }
        }
    }
}

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

输出棱镜日志文件

Prism 日志(如何为开发人员工作):图 4 - 使用 Kiwi 系统日志服务管理器工具监控生成的 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);

集成 Prism 日志和 IronPDF

将 Prism 和 IronPDF 一起使用

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

使用IronPDF进行Prism日志记录

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

安装 IronPDF

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

    • 在软件包管理器控制台中,键入以下命令并按 Enter:
Install-Package IronPdf
  • 另一种安装 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}");
}

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

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

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

结论

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

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

Kannaopat Udonpant
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
TCP .NET(如何为开发人员工作)
下一步 >
Npgsql C#(开发人员工作原理)