.NET 帮助

NLog C#(适用于开发人员的工作原理)

发布 2023年十月30日
分享:

日志记录是软件开发的一个重要方面。它可以帮助开发人员跟踪应用程序的行为、排除故障并深入了解代码在各种环境中的运行情况。NLog 是一种流行的 C# 日志框架,可以轻松地在应用程序中实现强大而灵活的日志记录功能。在本综合指南和教程中,我们将探索 C# 中的 NLog 世界。

什么是 NLog?

NLog 是一个免费的开源日志库,适用于 .NET 和 .NET Core 应用程序。它为在应用程序中记录消息提供了一种灵活且高度可配置的方式。由于其性能、可扩展性和易用性,NLog 是 .NET 生态系统中广泛使用的免费日志记录平台。

NLog 入门

我们可以在 ASP.NET Web 应用程序、ASP.NET WEB API、Windows 窗体应用程序、ASP.NET MVC 应用程序中使用 NLog,也可以根据需要在任何类型的应用程序中使用 NLog。我们将使用控制台应用程序来演示所有用例。

Install nLog Nuget Package

要开始使用 NLog,你需要在项目中安装 NLog NuGet 软件包。您可以通过 Visual Studio 中的 NuGet 包管理器按照以下步骤进行安装:

1.在 "工具 "菜单中选择 "NuGet 包管理器",然后选择 "管理解决方案的 NuGet 包"。

2.或者,在 "解决方案资源管理器 "中右键单击项目,选择 "管理 NuGet 包",然后选择 "浏览"。

3.在 NuGet 包管理器窗口中,单击 "浏览 "选项卡,然后在搜索框中输入 "NLog"。

4.你应该会在搜索结果中看到 NLog 软件包。单击它以将其选中。

5.在 NuGet 软件包管理器窗口的右侧,有一个解决方案中的项目列表。选择项目(s) 安装 NLog 的位置。

6.从版本下拉菜单中选择所需的 NLog 软件包版本。您可以选择最新的稳定版本,也可以根据需要选择特定版本。

7.选择项目后(s) 和版本,点击 "安装 "按钮开始安装过程。

NuGet 软件包管理器将下载并安装 NLog 和任何依赖项。您将在输出窗口中看到进度。

现在,NLog 已成功安装到您的项目中,您可以开始在 C# 代码中使用它来记录日志。

创建 NLog 配置文件

创建 NLog 配置文件 (通常命名为 nlog.config),您可以按照以下步骤操作。该配置文件将指定 NLog 在应用程序中的行为方式,包括日志目标、布局呈现器和规则。

在项目中,右键单击要创建配置文件的项目或所需文件夹。

1.选择 "添加" > "新项目..."

2.在 "添加新项目 "对话框中,搜索 "XML 文件 "或 "XML "并将其选中。

3.将文件命名为 nlog.config,然后单击 "添加 "按钮。

4.用文本编辑器或 XML 编辑器打开新创建的 nlog.config 文件。

5.在 NLog.XML 文件中添加以下配置。以下是 NLog 配置的基本示例,可将消息记录到控制台目标。您可以根据自己的需要自定义此配置文件:

配置文件

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- Define targets -->
  <targets>
    <!-- Log to a file -->
    <target name="console" xsi:type="Console" layout="${longdate}
${message}"/>
  </targets>

  <!-- Define rules -->
  <rules>
    <!-- All messages with a minimum log level of Debug or higher are written to the Console -->
    <logger name="*" minlevel="Debug" writeTo="Console" />
  </rules>

</nlog>
XML

在 C# 代码中,确保从 nlog.config 文件加载 NLog 配置。您通常在应用程序的启动代码中这样做,例如在 ASP.NET Core Startup.cs 中(适用于与 .NET 5 相同或更早的 .NET 版本),program.cs 文件 (适用于 .NET 6 或更高版本) 或控制台应用程序的 Main 方法:

internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Debug("This is Debug Message");
        Console.Read();
    }
}
internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Debug("This is Debug Message");
        Console.Read();
    }
}
Friend Class Program
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
	Shared Sub Main(ByVal args() As String)
		logger.Debug("This is Debug Message")
		Console.Read()
	End Sub
End Class
VB   C#

上述程序的输出结果如下

在本例中,我们创建了一个日志记录器类的实例,并用它记录调试级别的消息。让我们探索一下 NLog 支持的跟踪级别。

Logging Levels

NLog 支持多个日志级别,每个级别都有自己的意义:

1.跟踪:最详细的级别,通常用于诊断目的。

2.调试:用于调试信息,对开发过程有帮助。

3.Info:信息:有关应用程序运行的一般信息。

4.警告:表示不会中断应用程序的潜在问题。

5.错误:表示应调查的故障,但不一定会导致应用程序崩溃。

6.致命:表示应立即处理的严重故障。

通过将日志信息分为这些级别,您可以轻松地根据其严重性对它们进行过滤和优先级排序。

在 nLog.Config 文件的规则标签中设置 minlevel="Trace" 如下所示。

<rules>
  <!-- All messages with a minimum log level of Trace or higher are written to the Console -->
  <logger name="*" minlevel="Trace" writeTo="Console" />
</rules>
XML

让我们编写一段代码,记录所有跟踪级别的信息。

internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Trace("This is Trace Message");
        logger.Debug("This is Debug Message");
        logger.Info("This is Info Message");
        logger.Warn("This is Warning Message");
        logger.Error("This is Error Message");
        logger.Fatal("This is Fatal Message");
        Console.Read();
    }
}
internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Trace("This is Trace Message");
        logger.Debug("This is Debug Message");
        logger.Info("This is Info Message");
        logger.Warn("This is Warning Message");
        logger.Error("This is Error Message");
        logger.Fatal("This is Fatal Message");
        Console.Read();
    }
}
Friend Class Program
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
	Shared Sub Main(ByVal args() As String)
		logger.Trace("This is Trace Message")
		logger.Debug("This is Debug Message")
		logger.Info("This is Info Message")
		logger.Warn("This is Warning Message")
		logger.Error("This is Error Message")
		logger.Fatal("This is Fatal Message")
		Console.Read()
	End Sub
End Class
VB   C#

我们的程序在控制台中记录的信息如下所示。

nlog 日志信息

现在,我们已经演示了在控制台中记录信息的示例,现在我们将配置 NLog 目标,以便在文件中记录信息。

文件中的日志信息

我们需要在配置文件中设置文件目标,而不是控制台目标,以便记录文件日志。

  <targets>
  <target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>

<rules>
  <logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
XML

现在,运行程序将信息记录到文件中。

记录目标

NLog 支持各种日志输出目标,允许你选择日志信息的存储位置。一些常见的目标包括

1.文件: 将信息记录到一个或多个文件中。

2.控制台将信息记录到控制台。

3.数据库:将信息记录到数据库 (SQL Server、MySQL、Oracle、PostgreSQL 等。) 桌子

4.电子邮件:以电子邮件形式发送日志信息。

5.事件日志:将信息记录到 Windows 事件日志中。

6.自定义目标:您可以创建自定义日志目标,以满足您的特定需求。

您可以配置 NLog 以同时使用一个或多个目标。

介绍 IronPDF

IronPDF 是一个功能强大的 .NET 库,可简化 C# 和 VB.NET 应用程序中的 PDF 处理。它为创建、编辑和操作 PDF 文档以及将 HTML 内容转换为 PDF 格式提供了强大的功能,使其成为各行各业(包括网络开发、报表和文档管理)开发人员的必备工具。

IronPDF 的突出特点是 HTML 转 PDF 功能,它可以保留你的布局和样式。它能从网页内容生成 PDF,是报告、发票和文档的理想选择。HTML 文件、URL 和 HTML 字符串都可以轻松转换为 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

让我们生成一份带有日志记录的 PDF 文件。

带日志的 PDF 生成

第一步是将 IronPDF 库安装到我们的项目中。我们可以使用 Visual Studio 中的 NuGet 包管理器或通过 NuGet CLI 来完成这项工作。打开项目,在包管理器控制台中编写以下命令。

Install-Package IronPdf

该命令将在我们的项目中安装 IronPDF 和所有必需的依赖项。

编写以下代码,从带有日志记录的 HTML 生成 PDF 文件。

private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string [] args)
{
    logger.Info("Initializing Chrome PDF Renderer");
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    logger.Info("Creating PDF From HTML String");
    var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
    logger.Info("Saving PDF File");
    pdf.SaveAs(@"D:\myPDF.pdf");
}
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string [] args)
{
    logger.Info("Initializing Chrome PDF Renderer");
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    logger.Info("Creating PDF From HTML String");
    var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
    logger.Info("Saving PDF File");
    pdf.SaveAs(@"D:\myPDF.pdf");
}
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
	logger.Info("Initializing Chrome PDF Renderer")
	Dim renderer As New ChromePdfRenderer()
	logger.Info("Creating PDF From HTML String")
	Dim pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>")
	logger.Info("Saving PDF File")
	pdf.SaveAs("D:\myPDF.pdf")
End Sub
VB   C#

上述代码片段将创建一个 PDF 文件,文件中的记录信息如下所示。

日志和 PDF 文件

Conclusion

总之,NLog 已成为 C# 应用程序中有效记录日志的重要工具,为开发人员提供了一个用于捕获、分类和管理日志数据的强大框架。其灵活性和易用性使其成为满足不同领域日志记录需求的首选。此外,IronPDF 可简化.NET 应用程序中的 PDF 生成和操作,当与 IronPDF 等辅助库结合使用时,开发人员可将其管理功能扩展到创建基于 PDF 的日志和报告。值得一提的是,IronPDF 可提供 免费试用 测试其功能。如果符合您的要求,您可以选择 商业许可IronPDF提供了更多的优势和支持,可以无缝集成到您的项目中,尤其是PDF相关功能。

通过同时使用 NLog 和 IronPDF 的强大功能,开发人员不仅能深入了解其应用程序的行为,还能增强其报告和文档管理流程,确保其软件保持高效、可维护和文档齐全的结构化日志。

< 前一页
C# 引用关键字(开发人员工作原理)
下一步 >
Entity Framework C#(它是如何为开发人员工作的)

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

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