跳至页脚内容
.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; }
        }
    }
}
$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);
$vbLabelText   $csharpLabel

集成 Prism Logging 和 IronPDF

一起使用 Prism 和 IronPDF

在 C# 项目中将 PrismIronPDF 结合使用,打开了一些激动人心的可能性。 尽管 Prism 是用于处理日志的很好的工具,但 IronPDF 是将内容转换为 PDF 的一个出色的工具。 由于这种连接,程序员可以创建应用程序,将项目记录到自定义设计的 PDF 文档中。

使用 Prism Logging 和 IronPDF

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

安装 IronPDF。

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

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

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}");
}
$vbLabelText   $csharpLabel

下图是从 IronPDF 生成的图像日志报告。

Prism Logging (How It Works For Developers): Figure 6 - 使用 IronPDF 和 Prism 日志报告数据生成的输出 PDF。

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

结论

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

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,是 C# PDF 技术的先锋工程师。作为 Iron Software 核心代码库的原始开发者,自公司成立以来,他就塑造了公司的产品架构,并与首席执行官 Cameron Rimington 一起将其转变成一家公司,拥有50多人,服务于 NASA、特斯拉和全球政府机构。

Jacob 拥有曼彻斯特大学 (1998-2001) 的一级荣誉土木工程学士学位。1999 年在伦敦创办了自己的第一家软件公司,并于 2005 年创建了他的第一个 .NET 组件后,他专注于解决微软生态系统中的复杂问题。

他的旗舰 IronPDF 和 Iron Suite .NET 库在全球已获得超过 3000 万次的 NuGet 安装,其基础代码继续为全球使用的开发者工具提供支持。拥有 25 年商业经验和 41 年编程经验的 Jacob 仍专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。