将NLog与ASP.NET Core Web应用程序集成

tech2024-11-11  18

目录

介绍

集成步骤

添加NLog NuGet软件包

添加NLog配置

添加NLog提供程序

测试NLog提供程序

总结


下载源代码1.5 MB

介绍

在实际的应用程序中,正确的错误日志记录机制对于跟踪和解决应用程序的意外行为至关重要。在ASP.NET Core中,我们已经在Logging API 中内置了NuGet包,其包括在Microsoft.Extensions.Logging中。

有了这个API,我们可以将信息记录到不同的内置日志记录提供程序,如ConsoleDebugEventListenerTraceListeners等。为了扩展提供程序的数量,微软还与各种第三方日志记录提供程序,如NLogSerilogLoggrLog4Net和其他一些合作。

在本文中,我们将探讨与ASP.NET Core集成的NLog,后者是最受欢迎的第三方日志记录提供程序之一。

集成步骤

在本文中,我们将介绍与ASP.NET Core Web应用程序的NLog集成。此过程涉及三个步骤。他们是:

添加NLog NuGet软件包添加NLog配置添加NLog提供程序

添加NLog NuGet软件包

第一步,我们需要从NuGet软件包管理器安装NLog

为此,请右键单击解决方案资源管理器中的项目,然后从上下文菜单中选择管理NuGet... ”。它将打开程序包管理器解决方案窗口。

程序包管理器窗口中,浏览NLog.Web.AspNetCore NuGet程序包,如下图所示:

接下来,选择最新的稳定版本,然后单击安装。目前,最新版本为4.9.3。如果需要以前的版本,我们可以从版本下拉列表中选择。

这会将NLog NuGet软件包安装到我们的项目中。获得成功消息后,我们可以继续执行下一步,即添加NLog配置。

添加NLog配置

安装NLog NuGet软件包后,我们需要对其进行配置。NLog的配置信息将保留在配置文件(即应用程序根文件夹中的nlog.config中。

nlog.config不是自动生成的。因此,我们需要手动添加它。

要添加nlog.config,请右键单击项目,然后从上下文菜单中选择添加,然后选择新建项。在新项目模板窗口中,搜索文本文件。

命名文本文件nlog.config,如下图所示:

NLog配置文件是基于XML的配置文件。以下是将日志信息写入文件所需的最低配置。

<?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"> <!-- the targets to write --> <targets> <!-- write to file --> <target name="applog" xsi:type="File" fileName="C:\Log\applog-${shortdate}.log" layout="${longdate} - ${message} - ${exception:format=StackTrace}${newline}" /> </targets> <!-- rules to map from logger name to target --> <rules> <!-- all logs including Microsoft --> <logger name="*" minlevel="Trace" writeTo="applog" /> </rules> </nlog>

按照上面的配置,如果NLog 不存在,它将在路径C:\Log\创建名称为applog-{today’s date}.loglog日志文件。您还可以根据需要提供任何物理路径。

日志记录规则强制执行我们所需的最低日志记录级别。

在这里,我们仅讨论将应用程序异常记录到日志文件的最低配置。要查看更多配置选项,请访问GitHub中的 NLog 官方文档

在构建时,应将此配置文件复制到Output目录。为此,请在解决方案资源管理器中右键单击nlog.config文件,然后选择属性 ”

属性窗口的高级部分下,转到复制到输出目录属性,然后选择如果较新则复制作为值。

现在我们已经完成了配置部分,我们可以进入最后一步,添加NLog Provider

添加NLog提供程序

要将NLog添加为日志记录提供程序之一,我们需要修改Program.cs文件中的CreateHostBuilder方法。以下代码段将启用NLog日志记录提供程序。

.ConfigureLogging((hostingContext, logging) => { logging.AddNLog(hostingContext.Configuration.GetSection("Logging")); });

如您在代码段中所见,将根据appsettings.json文件中Logging提供的配置来应用日志记录级别。

下面是Visual Studio在创建新项目时在appsettings.json文件中创建的默认日志记录配置。您可以根据需要更改此日志记录级别。

有关高级日志记录级别的配置,请访问Microsoft官方页面

至此,我们已经完成了NLogASP.NET Core Web应用程序的集成。现在,让我们通过引发异常来测试NLog日志提供程序。

测试NLog提供程序

为了测试NLog提供程序,我们使用Microsoft Logging API。如简介部分所述,API已包含在Microsoft.Extensions.Logging包中,该包已添加到ASP.NET Core Web应用程序模板中。

我们用于记录错误的接口ILogger来自Microsoft.Extensions.Logging命名空间。ILogger在应用程序的依赖项容器中已经可用,因为WebHost构建器正在将日志记录服务与其他必要服务一起添加到依赖项容器中。

因此,我们可以通过HomeController构造函数注入ILogger类型,如下图所示:

接下来,我们必须在Index操作中生成一个Exception并将其记录到ILogger对象中。

在这里,我们正在创建一个除零异常,并记录到记录器API。接下来,我们可以验证日志文件。

根据指定的配置参数创建日志文件并记录异常。

总结

在本文中,我们介绍了NLog库与ASP.NET Core 3.1 Web应用程序的基本集成步骤。很少有其他第三方日志记录提供程序也可以作为NuGet软件包使用。

最新回复(0)