目录

介绍

集成步骤

添加NLog NuGet软件包

添加NLog配置

添加NLog提供程序

测试NLog提供程序

总结


  • 下载源代码1.5 MB

介绍

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

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

在本文中,我们将探讨与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}.log的log日志文件。您还可以根据需要提供任何物理路径。

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

在这里,我们仅讨论将应用程序异常记录到日志文件的最低配置。要查看更多配置选项,请访问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官方页面。

至此,我们已经完成了NLog与ASP.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软件包使用。

将NLog与ASP.NET Core Web应用程序集成相关推荐

  1. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  2. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...

  3. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

  4. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

    想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...

  5. Asp.Net Core Web应用程序—探索

    前言 作为一个Windows系统下的开发者,我对于Core的使用机会几乎为0,但是考虑到微软的战略规划,我觉得,Core还是有先了解起来的必要. 因为,目前微软已经搞出了两个框架了,一个是Net标准( ...

  6. UkrGuru.SqlJson非常适合您的ASP.NET Core Web应用程序!

    目录 背景 介绍 使用代码 服务设置 提供在页面中使用的DbService Index页 创建页面 编辑页面 详细信息页面 删除页面 在本技巧中,您将了解一种无需在ASP.NET Core Web应用 ...

  7. 使用 EF Core Power Tools 和 CoreAdmin 在 5 分钟内将管理员 CRUD 网页添加到您的 ASP.NET Core Web 应用程序

    有时,也许在新产品/解决方案开发的早期阶段,您可能会发现自己需要一种简单的方法来让客户编辑解决方案中的某些数据. 一种方法是为现有数据库的简单数据输入创建一个管理页面. 在这篇文章中,我将展示如何使用 ...

  8. ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await

    PS:异步编程的本质就是新开任务线程来处理. 约定:异步的方法名均以Async结尾. 实际上呢,异步编程就是通过Task.Run()来实现的. 了解线程的人都知道,新开一个线程来处理事务这个很常见,但 ...

  9. VS 2017开发ASP.NET Core Web应用过程中发现的一个重大Bug

    今天试着用VS 2017去开发一个.net core项目,想着看看.net core的开发和MVC5开发有什么区别,然后从中发现了一个VS2017的Bug. 首先,我们新建项目,ASP.NET Cor ...

最新文章

  1. _00021 尼娜抹微笑伊拉克_谁的的最离奇的异常第二阶段 Jedis pool.returnResource(jedis)...
  2. js数组中的splice()方法
  3. OpenCV高级拼接Stitcher类
  4. 基于QoE的实时视频编码优化:低功耗,低延时,高质量
  5. php移动代码,移动专区周级收录如何提交 复制这段php代码即可
  6. android 获取通讯录全选反选_Xamarin.Forms读取并展示Android和iOS通讯录 TerminalMACS客户端...
  7. linux怎么改程序图标,如何在Ubuntu Unity上修改应用程序图标
  8. 阿里平头哥“生娃”!最强 RISC-V 处理器玄铁 910 诞生!
  9. Python——numpy排序 求和
  10. python迭代器学习与简单的实践
  11. 条码打印软件如何实现二维码内容换行显示 1
  12. Linux中ping脚本
  13. cl.exe nmake.exe
  14. NVIDIA Jetson TK1学习与开发——手动刷机
  15. 开源IMDG之GridGain
  16. 行存储(Row-Based)和列存储(Column-Based)
  17. 蓝奏云分享链接打不开修改host
  18. 活体检测综述 Deep Learning for Face Anti-Spoofing: A Survey 阅读记录
  19. 向上转型 (Upcasting)
  20. 九度OJ-题目1163:素数

热门文章

  1. java获取页面点击次数_在Java中怎样得出一个按钮点击的次数
  2. python的numpy是什么_python中numpy是什么
  3. qt插件开发框架搭建_Flutter框架之:开发环境搭建
  4. 三八妇女节可以应用的PSD分层模板
  5. 手机壁纸 NBA群星高清壁纸
  6. 鉴赏交流在海报设计中的作用
  7. 抓住眼球的美食海报模板|总有设计技法,吸引住你
  8. C++ Vector中size()和capacity()区别
  9. QTableWidget简单使用
  10. oracle的优化适用于mysql吗_性能优化之数据库优化,适用于Sqlite、Mysql、Oracle、Sql server,详细介绍了索引和事务及部分针对Sqlite的优化...