NLog-ASP.NET Core 5入门
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入门相关推荐
- asp.net core轻松入门之MVC中Options读取配置文件
接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...
- 【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总
当前标签: ASP.NET Core快速入门 共2页: 1 2 下一页 任务50:Identity MVC:DbContextSeed初始化 GASA 2019-03-02 14:09 阅读:16 ...
- 6.1 ASP.NET Core Web 入门
6.1 ASP.NET Core Web 入门 ASP.NET Core中,严格来讲只有一个Asp.net Core MVC一个框架,Asp.net Core MVC既支持基于视图的MVC开发,也支持 ...
- ASP.NET Core 快速入门
ASP.NET Core 是一个由微软创建的,用于构建 web 应用.API.微服务 的 web 框架.通过本文的学习就能快速的入门ASP.NET Core,对大家的学习或者工作具有一定的参考学习价值 ...
- ASP.NET Core快速入门(第3章:依赖注入)--学习笔记
点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务16:介绍 1.依赖注入概念详解 从UML和软件建模来理 ...
- ASP.NET Core快速入门(第4章:ASP.NET Core HTTP介绍)--学习笔记
点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务22:课程介绍 1.HTTP 处理过程 2.WebHos ...
- ASP.NET Core快速入门(第2章:配置管理)--学习笔记
点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务9:配置介绍 命令行配置 Json文件配置 从配置文件文 ...
- ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记
点击蓝字关注我们 课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 1.介绍与引入 2.配置管理 3.依赖注入 ...
- ASP.NET Core 快速入门(实战篇)
上篇讲了<asp.net core在linux上的环境部署>.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).n ...
- ASP.NET Core轻松入门之Middleware管道模型
Middleware指的是微软的的asp.net core的管道模型.其原理可以用微软官方的下图展示: 原理如上图,随着Request的发起,HttpContext会经历多个管道处理(图中的箭头游走方 ...
最新文章
- 【Android 事件分发】ItemTouchHelper 实现侧滑删除
- 【招聘(北京)】北森测评招聘 .NET 架构师、高级工程师
- java jive歌词_Java Jive_Manhattan Transfer with Phil Collins_高音质在线试听_Java Jive歌词|歌曲下载_酷狗音乐...
- Django 缓存系统
- docker创建image
- 腾讯、爱奇艺修改超前点播规则:不再是支付额外50元看6集
- Java中,成员内部类的常见修饰符及应用 成员内部类不是静态的,访问的格式...
- Excel插入多列相同数据
- python贪吃蛇手机版代码_200行python代码实现贪吃蛇游戏
- photoshop2019及其破解器
- 制作web3d动态产品展示的优点
- 普乐蛙大型5d动感影院4d影院设备价格4d动感影院座椅
- 小米昨天发布的新机,简直太TM牛了……
- 剑网3指尖江湖开局门派选TA最好 叉叉助手伴你快意江湖
- Autodesk所有产品的卸载、安装解决方案(3dsmax、cad等)
- intel服务器e5系列,以后都没有Xeon E5/E7了,Intel正式发布Xeon Scalable系列处理器
- Typora 设置代码块的默认编程语言
- 京东主图如何优化,一键自动替换长图
- 电工实训考核装置柜式双面型QY-W760C
- 控制两个div不换行
热门文章
- 关于 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh的解决办法
- IntelliJ IDEA代码分屏显示
- 安装mongoDB遇见的一个路径问题
- Ctrl与Caps Lock键的交换
- Oracle中的USEREVN()
- asp.net网页上嵌入Flash显示
- 本文主要总结关于mysql的优化(将会持续更新)
- 基于FPGA的异步FIFO设计
- 软件架构实践文章链接
- 【软件周刊】D语言卷土重来,Vue.js 应获 1024 个赞,小薇可以一键启动了