.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。 我们将使用控制台应用程序来演示所有用例。

安装 nLog NuGet 软件包

要开始使用 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,然后单击 "添加 "按钮。

    Nlog Csharp Guide 1 related to 创建 NLog 配置文件

  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 Csharp Guide 2 related to 配置文件

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

日志级别

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

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

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

  3. 信息:有关应用程序操作的一般信息。

  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 目标,以便在文件中记录消息。

文件 ### 中的日志信息

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

  <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 Csharp Guide 4 related to 文件 ### 中的日志信息

登录目标

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译文必须使用".NET "和 "Python "功能,以保留您的布局和样式。 它可以根据网页内容生成 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 文件

Nlog Csharp Guide 5 related to 日志和 PDF 文件

结论

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

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

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

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >