在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
日志记录是软件开发的一个重要方面。 它可以帮助开发人员跟踪其应用程序的行为、排除故障并深入了解其代码在各种环境中的运行情况。 NLog 是一种流行的 C# 日志框架,可以轻松地在应用程序中实现强大而灵活的日志记录功能。 在本综合指南和教程中,我们将探索 C# 中的 NLog 世界。
NLog是一个免费的开源日志库,适用于 .NET 和 .NET Core 应用程序。 它提供了一种灵活且高度可配置的方式来记录应用程序中的消息。 NLog 因其性能、可扩展性和易用性而成为 .NET 生态系统中广泛使用的免费日志记录平台。
我们可以在 ASP.NET Web 应用程序、ASP.NET WEB API、Windows 表单应用程序、ASP.NET MVC 应用程序中使用 NLog,也可以根据需要在任何类型的应用程序中使用 NLog。 我们将使用控制台应用程序来演示所有用例。
要开始使用 NLog,您需要在项目中安装 NLog NuGet 软件包。 您可以通过 Visual Studio 中的 NuGet 包管理器,按照以下步骤进行操作:
在 "工具 "菜单中选择 "NuGet 包管理器",然后选择 "管理解决方案的 NuGet 包"。
或者,右键单击解决方案资源管理器中的项目,选择 "管理 NuGet 包",然后选择 "浏览"。
在 NuGet 包管理器窗口中,点击 "浏览 "选项卡,在搜索框中输入 "NLog"。
您应在搜索结果中看到 NLog 软件包。 点击选择。
在 NuGet 包管理器窗口的右侧,有一个解决方案中的项目列表。 选择项目(s)您要在何处安装 NLog。
从版本下拉菜单中选择所需的 NLog 软件包版本。 您可以根据需要选择最新的稳定版本或特定版本。
选择项目后(s)请选择您需要的版本,然后单击 "安装 "按钮开始安装过程。
NuGet 包管理器将下载并安装 NLog 和任何依赖项。 您将在输出窗口中看到翻译进度。
NLog 现已成功安装到您的项目中,您可以开始在 C# 代码中使用它进行日志记录。
创建 NLog 配置文件(通常命名为 nlog.config)您可以按照以下步骤进行翻译。 该配置文件将指定 NLog 在应用程序中的行为方式,包括日志目标、布局呈现器和规则。
在项目中,右键单击要创建配置文件的项目或所需文件夹。
选择 "添加">"新项目..."
在 "添加新项目 "对话框中,搜索 "XML 文件 "或 "XML "并将其选中。
将文件命名为 nlog.config,然后单击 "添加 "按钮。
在文本编辑器或 XML 编辑器中打开新创建的 nlog.config 文件。
<?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>
在 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
上述程序的输出结果如下
在本例中,我们创建了一个日志记录器类的实例,并用它记录调试级别的消息。 让我们来了解一下 NLog 支持的跟踪级别。
NLog 支持多个日志级别,每个级别都有自己的意义:
跟踪:最详细的级别,通常用于诊断目的。
调试:用于调试信息,对开发过程有帮助。
信息:有关应用程序操作的一般信息。
警告:表示不会破坏应用程序的潜在问题。
错误:表示应进行调查的故障,但不一定会导致应用程序崩溃。
致命:表示出现严重故障,应立即处理。
通过将日志信息分为这些级别,您可以轻松地根据其严重程度进行过滤和优先级排序。
在 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>
让我们编写一段代码,记录所有跟踪级别的信息。
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
我们的程序在控制台中记录的信息如下所示。
现在,我们已经演示了在控制台中记录消息的示例,现在我们将配置 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>
现在,运行程序将信息记录到文件中。
NLog 支持各种日志输出目标,允许您选择日志信息的存储位置。 常见的翻译对象包括
文件:将消息记录到一个或多个文件中。
控制台:将消息记录到控制台。
数据库:将信息记录到数据库中(SQL Server、MySQL、Oracle、PostgreSQL 等。)桌子
电子邮件:以电子邮件形式发送日志信息。
事件日志:将信息记录到 Windows 事件日志中。
自定义目标:您可以创建自定义日志目标,以满足您的特定需求。
您可以配置 NLog 以同时使用一个或多个目标。
进一步了解 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
让我们生成一份带有日志记录的 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
上述代码片段将创建一个 PDF 文件,文件中的记录信息如下所示。
总之,NLog 已成为 C# 应用程序中有效记录日志的必备工具,为开发人员提供了捕获、分类和管理日志数据的强大框架。 它的灵活性和易用性使其成为满足各领域日志记录需求的首选。 此外,IronPDF for .NET 可简化 .NET 应用程序中的 PDF 生成和操作,如果与 IronPDF 等辅助库结合使用,开发人员就可以扩展其管理功能,使其涵盖基于 PDF 的日志和报告的创建。 值得一提的是,IronPDF 提供免费试用 IronPDF用于测试其功能。 如果符合您的要求,您可以选择IronPDF 商业许可证同时,提供继续使用 IronPdf 功能的附加优势,并支持无缝集成到您的项目中,特别是 PDF 相关功能。
通过同时运用 NLog 和 IronPDF 的强大功能,开发人员不仅可以深入了解其应用程序的行为,还可以增强其报告和文档管理流程,确保其软件保持高效、可维护和文档齐全的结构化日志。