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!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果把整个因特网都印出来 你认为会怎么样

2019独角兽企业重金招聘Python工程师标准>>> 如果把整个因特网都印出来的话... 将会用掉 4500 万个墨盒&#xff0c;总计五十万公升的墨水。如果把这些墨水换成燃油&#xff0c;足够让747连飞 18,000 英里&#xff08;28,800 公里&#xff09;&#xff0c;从纽约不降…

用java求直角三角形的面积_JAVA 已知三角形的三个边判断 是否为直角三角形,如果是求面积!...

匿名用户1级2009-03-21 回答你是要java的还是jsp的&#xff1f;给你个jsp的把。。。java的和jsp的差不多。。。主要还是那个求面积的公式(1) (2) (3) (4) (5) 请输入三角形的三个边的长度&#xff0c;输入的数字用逗号分割&#xff1a;(6) (7) (8) (9) (10) (11) (12) String a…

ASP.NET Core中间件初始化探究

前言在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景&#xff0c;ASP.NET Core默认也为我们内置了许多的中间件&#xff0c;甚至有时候我们需要自定义中间件来帮我们处理一些请求管道过程中的处理。接下来&#xff0c;我们将围绕着以下几个问题来简单…

基于Python实现的微信好友数据分析

最近微信迎来了一次重要的更新&#xff0c;允许用户对”发现”页面进行定制。不知道从什么时候开始&#xff0c;微信朋友圈变得越来越复杂&#xff0c;当越来越多的人选择”仅展示最近三天的朋友圈”&#xff0c;大概连微信官方都是一脸的无可奈何。逐步泛化的好友关系&#xf…

11、位段

位段以位为单位定义结构体&#xff08;或共用体&#xff09;中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。 位段成员必须被声明为unsigned或int类型。 位段结构也是一种结构体类型&#xff0c;只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位…

java虚拟机和javaGC_Java虚拟机(三):GC算法和种类

一、介绍GC(Garbage Collection)&#xff0c;垃圾收集Java中&#xff0c;GC的对象是堆空间和永久区二、GC算法1. 引用计数法老牌垃圾回收算法通过引用计算来回收垃圾Java中未使用&#xff0c;使用者有COM、ActionScript3、Python实现&#xff1a;1> 对于一个对象A&#xff0…

看似简单但容易忽视的编程常识

这些年写了很多的代码、也读过很多的人写的代码&#xff0c;这几年&#xff0c;写代码的机会越来越少&#xff0c;但是每次写代码&#xff0c;感觉需要思考的东西越来越多&#xff0c;好的代码确实难能可贵&#xff0c;在国内业界中&#xff0c;好的软件不少&#xff0c;但是好…

NET问答:在 Linq 查询中可以处理异常吗?

咨询区 Jader Dias&#xff1a;先上例子:myEnumerable.Select(a > ThisMethodMayThrowExceptions(a));如何让上面的 Linq查询 即使在抛出异常的情况下也能完整的执行&#xff0c;就像那种带有默认值的 try...catch 一样&#xff0c;当异常抛出时总会执行 catch 后再把它救回…

ASP.NET : Kerberos网络认证过程

今天抽时间初略学习了一下kerberos网络认证过程&#xff0c;作为笔记整理如下&#xff0c;希望与大家分享。 一、Kerberos初步定义: Kerberos这一名词来源于希腊神话“三个头的狗——地狱之门守护者”。Kerberos 是一种网络认证协议&#xff0c;其设计目标是通过密钥系统为客户…

MIPS投RISC-V是龙芯新征程的开始

日前&#xff0c;外媒报道MIPS Technologies宣布将放弃继续设计MIPS处理器&#xff0c;转向了RISC-V。在MIPS加盟RISC-V阵营后&#xff0c;有人鼓吹龙芯要完&#xff0c;但事实上&#xff0c;这完全是不了解龙芯具体情况的臆测。特别是在龙芯开发自主指令集LoongArch之后&#…

近期GitHub上最热门的开源项目(附链接)

2 月份 GitHub 上最热门的开源项目又出炉了&#xff0c;又有哪些新的项目挤进热门榜单了呢&#xff0c;一起来看看。1、nocodehttps://github.com/kelseyhightower/nocode Star 16256这是 2 月份新出炉的项目&#xff0c;可以说是 2018 年最火的佛系编程了&#xff0c;这个项目…

fb静态区域_fb 静态数据

在STAT中定义静态变量&#xff0c;并在INITIAL VALUE中设定初始值&#xff0c;静态变量的初始值会自动存如对应的背景数据块中回答者&#xff1a; 天晴09 - 初级工程师&nbsp&nbsp第9级2008-09-10 17:01:08你可以在fb中定义的时候直接输入初始值&#xff0c;也可以在ob…

Apache-不重启完成添加或更改域名

这两天开始学习Linux环境下配置Apache服务器&#xff0c;结合现在行业实况&#xff0c;我特地注意学习了虚拟主机的配置方法&#xff0c;我买的书上讲的方法是在httpd.conf文件中添加VirtualHost来实现的&#xff0c;经过实践也成功了&#xff0c;但是这个方法需要在配置后重启…

9年没涨价,上太空……这些树莓派的冷知识你知道多少?

作为最成功的微型计算机&#xff0c;开源的树莓派&#xff08;Raspberry Pi&#xff09;在技术圈和学术界一直广受编程爱好者的好评&#xff0c;各路大神基于树莓派制作的新奇设备层出不穷&#xff0c;围绕这款微型计算机已经形成了一种独特的 DIY 文化&#xff0c;相关的开源软…

汇编语言入门教程

学习编程其实就是学高级语言&#xff0c;即那些为人类设计的计算机语言。但是&#xff0c;计算机不理解高级语言&#xff0c;必须通过编译器转成二进制代码&#xff0c;才能运行。学会高级语言&#xff0c;并不等于理解计算机实际的运行步骤。计算机真正能够理解的是低级语言&a…

java将图片铺满panel_如何让添加的背景图片铺满整个JFrame?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼参考这个看看import java.awt.event.*;import javax.swing.*;import java.awt.*;public class BackgroundImage extends JFrame{JScrollPane scrollPane;ImageIcon icon;Image image;public BackgroundImage(){icon newImageIcon(…

SQL如何备份到异机

--SQL如何备份到异机 写成存储过程&#xff0c;建立作业定时备份~~~ --在sql中映射一下就可以了 exec master..xp_cmdshell net use z: \\yizhi\D$ "密码" /user:yizhi\administrator /*--说明: exec master..xp_cmdshell net use z: \\xz\c$ "密码" /user…

轻量易用的微信Sdk发布——Magicodes.Wx.Sdk

概述最简洁最易于使用的微信Sdk&#xff0c;包括公众号Sdk、小程序Sdk、企业微信Sdk等&#xff0c;以及Abp VNext集成。名称NugetMagicodes.Wx.PublicAccount.SdkMagicodes.Wx.PublicAccount.Sdk.AspNetMagicodes.Wx.PublicAccount.Sdk.Abp如何贡献&#xff1f;如何快速封装一个…

数学界的高冷之王,N次拒绝巨额奖金:我穷,但是我不缺钱。。。

在现实生活中&#xff0c;你和谁在一起的确很重要&#xff0c;甚至能改变你的成长轨迹&#xff0c;决定你的人生成败。是否还记得&#xff0c;当你跟学霸做同学的时候&#xff0c;你总会莫名其妙跟他一起撸题目&#xff1b;当宿舍其他兄弟正在打游戏的时候&#xff0c;你也想着…

php-7.1.0,PHP 7.4.0 Alpha 1 v7.4.0 官方最新版

PHP团队近期宣布推出PHP 7.4.0首个版本PHP 7.4.0 Alpha 1&#xff0c;且下一个Alpha 2版本也在计划推出&#xff0c;不过作为早期测试版本&#xff0c;建议不要在生产环境中使用&#xff0c;想体验PHP最新运行逻辑的可以下载体验PHP 7.4.0 Alpha 1源码。基本简介PHP原始为Perso…