1、创建一个新的ASP.NET Core项目

在Visual Studio 2019中。需要版本16.8+

2、手动或使用NuGet在csproj中添加依赖项

安装最新版本:

  • NLog.Web.AspNetCore 4.9+

  • 如有可能,更新NLog软件包

在csproj中:

<ItemGroup><PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" /><PackageReference Include="NLog" Version="4.7.6" />
</ItemGroup>

3、创建一个nlog.config文件。

在项目的根目录中创建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"autoReload="true"internalLogLevel="Info"internalLogFile="c:\temp\internal-nlog.txt"><!-- enable asp.net core layout renderers --><extensions><add assembly="NLog.Web.AspNetCore"/></extensions><!-- the targets to write to --><targets><!-- write logs to file  --><target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" /><!-- another file log, only own logs. Uses some ASP.NET core renderers --><target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" /></targets><!-- rules to map from logger name to target --><rules><!--All logs, including from Microsoft--><logger name="*" minlevel="Trace" writeTo="allfile" /><!--Skip non-critical Microsoft logs and so log only own logs--><logger name="Microsoft.*" maxlevel="Info" final="true" /> <!-- BlackHole without writeTo --><logger name="System.Net.Http.*" maxlevel="Info" final="true" /> <!-- BlackHole without writeTo --><logger name="*" minlevel="Trace" writeTo="ownFile-web" /></rules>
</nlog>

请注意,如果删除所有其他LoggingProviders(如控制台)并且仅使用NLog,则可能必须特别注意Hosting Lifetime Startup Messages。因为这可能导致托管环境(Visual Studio / Docker / Azure容器)看不到已启动的应用程序。

4、更新program.cs

更新program.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using NLog.Web;namespace ASP.NET_Core_5_NLog_Example
{public class Program{public static void Main(string[] args){var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();try{logger.Debug("init main");CreateHostBuilder(args).Build().Run();}catch (Exception exception){//NLog: catch setup errorslogger.Error(exception, "Stopped program because of exception");throw;}finally{// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)NLog.LogManager.Shutdown();}}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).ConfigureLogging(logging =>{logging.ClearProviders();logging.SetMinimumLevel(LogLevel.Trace);}).UseNLog();  // NLog: Setup NLog for Dependency injection}
}

5、配置appsettings.json / appsettings.Development.json

中指定的日志记录配置appsettings.json会覆盖对的任何调用SetMinimumLevel。因此"Default":,请根据您的需要删除或正确调整它。

{"Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Trace","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"AllowedHosts": "*"
}

切记还要更新任何特定于环境的配置,以免引起任何意外。前任appsettings.Development.json

6、写日志

将ILogger注入您的控制器中:

using Microsoft.Extensions.Logging;public class HomeController : Controller
{private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;_logger.LogDebug(1, "NLog injected into HomeController");}public IActionResult Index(){_logger.LogInformation("Hello, this is the index!");return View();}

7、示例输出

启动ASP.NET Core网站时,我们得到两个文件:

2020-12-29 16:47:02.5291||DEBUG|ASP.NET_Core_5_NLog_Example.Program|init main |url: |action:
2020-12-29 16:47:03.5943|1|DEBUG|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|NLog injected into HomeController |url: https://localhost/|action: Index
2020-12-29 16:47:03.5943||INFO|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|Hello, this is the index! |url: https://localhost/|action: Index
2020-12-29 16:47:02.5291||DEBUG|ASP.NET_Core_5_NLog_Example.Program|init main
2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Application started. Press Ctrl+C to shut down.
2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Hosting environment: Development
2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Content root path: D:\nlog\NLog.Web\examples\ASP.NET Core 5\ASP.NET Core 5 NLog Example
2020-12-29 16:47:03.5943|1|DEBUG|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|NLog injected into HomeController
2020-12-29 16:47:03.5943||INFO|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|Hello, this is the index!

NLog-ASP.NET Core 5入门相关推荐

  1. asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...

  2. 【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总

    当前标签: ASP.NET Core快速入门 共2页: 1 2 下一页  任务50:Identity MVC:DbContextSeed初始化 GASA 2019-03-02 14:09 阅读:16 ...

  3. 6.1 ASP.NET Core Web 入门

    6.1 ASP.NET Core Web 入门 ASP.NET Core中,严格来讲只有一个Asp.net Core MVC一个框架,Asp.net Core MVC既支持基于视图的MVC开发,也支持 ...

  4. ASP.NET Core 快速入门

    ASP.NET Core 是一个由微软创建的,用于构建 web 应用.API.微服务 的 web 框架.通过本文的学习就能快速的入门ASP.NET Core,对大家的学习或者工作具有一定的参考学习价值 ...

  5. ASP.NET Core快速入门(第3章:依赖注入)--学习笔记

    点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务16:介绍 1.依赖注入概念详解 从UML和软件建模来理 ...

  6. ASP.NET Core快速入门(第4章:ASP.NET Core HTTP介绍)--学习笔记

    点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务22:课程介绍 1.HTTP 处理过程 2.WebHos ...

  7. ASP.NET Core快速入门(第2章:配置管理)--学习笔记

    点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务9:配置介绍 命令行配置 Json文件配置 从配置文件文 ...

  8. ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记

    点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 1.介绍与引入 2.配置管理 3.依赖注入 ...

  9. ASP.NET Core 快速入门(实战篇)

    上篇讲了<asp.net core在linux上的环境部署>.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).n ...

  10. ASP.NET Core轻松入门之Middleware管道模型

    Middleware指的是微软的的asp.net core的管道模型.其原理可以用微软官方的下图展示: 原理如上图,随着Request的发起,HttpContext会经历多个管道处理(图中的箭头游走方 ...

最新文章

  1. 【Android 事件分发】ItemTouchHelper 实现侧滑删除
  2. 【招聘(北京)】北森测评招聘 .NET 架构师、高级工程师
  3. java jive歌词_Java Jive_Manhattan Transfer with Phil Collins_高音质在线试听_Java Jive歌词|歌曲下载_酷狗音乐...
  4. Django 缓存系统
  5. docker创建image
  6. 腾讯、爱奇艺修改超前点播规则:不再是支付额外50元看6集
  7. Java中,成员内部类的常见修饰符及应用 成员内部类不是静态的,访问的格式...
  8. Excel插入多列相同数据
  9. python贪吃蛇手机版代码_200行python代码实现贪吃蛇游戏
  10. photoshop2019及其破解器
  11. 制作web3d动态产品展示的优点
  12. 普乐蛙大型5d动感影院4d影院设备价格4d动感影院座椅
  13. 小米昨天发布的新机,简直太TM牛了……
  14. 剑网3指尖江湖开局门派选TA最好 叉叉助手伴你快意江湖
  15. Autodesk所有产品的卸载、安装解决方案(3dsmax、cad等)
  16. intel服务器e5系列,以后都没有Xeon E5/E7了,Intel正式发布Xeon Scalable系列处理器
  17. Typora 设置代码块的默认编程语言
  18. 京东主图如何优化,一键自动替换长图
  19. 电工实训考核装置柜式双面型QY-W760C
  20. 控制两个div不换行

热门文章

  1. 关于 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh的解决办法
  2. IntelliJ IDEA代码分屏显示
  3. 安装mongoDB遇见的一个路径问题
  4. Ctrl与Caps Lock键的交换
  5. Oracle中的USEREVN()
  6. asp.net网页上嵌入Flash显示
  7. 本文主要总结关于mysql的优化(将会持续更新)
  8. 基于FPGA的异步FIFO设计
  9. 软件架构实践文章链接
  10. 【软件周刊】D语言卷土重来,Vue.js 应获 1024 个赞,小薇可以一键启动了