1、先创建 .net core Web 应用程序,选择API

2、安装 Nuget 包:Nlog.Web.AspNetCore

  1. install-package Nlog
  2. install-package Nlog.Web.AspNetCore

或者打开Nuget管理界面搜索Nlog.Web.AspNetCore(我安装的版本是V4.9.0)

3、添加配置文件: nlog.config  

注意,此处nlog.config最好是小写的,需修改属性使其始终复制

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. autoReload="true"
  5. internalLogLevel="Info"
  6. internalLogFile="c:\temp\internal-nlog.txt">
  7.  
  8. <!-- enable asp.net core layout renderers -->
  9. <extensions>
  10. <add assembly="NLog.Web.AspNetCore"/>
  11. </extensions>
  12.  
  13. <!-- the targets to write to -->
  14. <targets>
  15. <!-- write logs to file -->
  16. <target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"
  17. layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
  18.  
  19. <!-- another file log, only own logs. Uses some ASP.NET core renderers -->
  20. <target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log"
  21. layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
  22. </targets>
  23.  
  24. <!-- rules to map from logger name to target -->
  25. <rules>
  26. <!--All logs, including from Microsoft-->
  27. <logger name="*" minlevel="Trace" writeTo="allfile" />
  28.  
  29. <!--Skip non-critical Microsoft logs and so log only own logs-->
  30. <logger name="Microsoft.*" maxlevel="Info" final="true" /> <!-- BlackHole without writeTo -->
  31. <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  32. </rules>
  33. </nlog>

nlog.config(来源:官方文档)

配置appsettings.json

  1. "Logging": {
  2. "LogLevel": {
  3. "Default": "Trace",
  4. "Microsoft": "Information"
  5. }
  6. }

4、注册日志依赖

方法一:通过修改Program.cs

  1. //需引用
  2. //using Microsoft.Extensions.Logging;
  3. //using NLog.Web;
  4.  
  5. public class Program
  6. {
  7. public static void Main(string[] args)
  8. {
  9. NLog.Web.NLogBuilder.ConfigureNLog("nlog.config");
  10. CreateWebHostBuilder(args).Build().Run();
  11. }
  12.  
  13. public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  14. WebHost.CreateDefaultBuilder(args)
  15. .UseStartup<Startup>()
  16. .ConfigureLogging(logging =>
  17. {
  18. logging.ClearProviders(); //移除已经注册的其他日志处理程序
  19. logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); //设置最小的日志级别
  20. })
  21. .UseNLog();
  22. }

Program.cs

方法二:通过修改Startup.cs里的Configure函数

  1. //需引用
  2. //using NLog.Extensions.Logging;
  3. //using NLog.Web;
  4.  
  5. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  6. {
  7. if (env.IsDevelopment())
  8. {
  9. app.UseDeveloperExceptionPage();
  10. }
  11. else
  12. {
  13. app.UseHsts();
  14. }
  15.  
  16. app.UseHttpsRedirection();
  17.  
  18. loggerFactory.AddNLog();//添加NLog
  19. env.ConfigureNLog("nlog.config");//读取Nlog配置文件
  20.  
  21. app.UseMvc();
  22. }

Configure

5、修改 Controller, 输出日志:

  1. [Route("api/")]
  2. public class LoginController : Controller
  3. {
  4. private ILogger<LoginController> logger;
  5. public LoginController(ILogger<LoginController> _logger)
  6. {
  7. logger = _logger;
  8. }
  9.  
  10. [Route("Login")]
  11. [HttpGet]
  12. public stringLogin()
  13. {
  14. logger.LogInformation("Info日志");
  15. logger.LogError("Error日志");
  16. logger.LogWarning("Warning日志");
  17. logger.LogCritical("Critical日志");
  18. logger.LogWarning("Warning日志");
  19. logger.LogTrace("Trace日志");
  20. logger.Log(LogLevel.Warning, "LogWarn日志");
  21. logger.Log(LogLevel.Debug, "LogDebug日志");
  22. logger.Log(LogLevel.Error, "LogError日志");
  23. return "";
  24. }
  25. }

控制器

打印日志的时候有两种方式

logger.Log(LogLevel.Warning, "LogWarning日志:"); //标红的地方可以选择日志的级别

logger.LogWarning("Warning日志");//直接调内置的级别函数

6、结果

程序跑起来之后会出现前两个文件~访问完接口后会出现最后那个文件

internal-nlog 记录了NLog的启动及加载config的信息。
nlog-all 记录了所有日志
nlog-own 记录了我们自定义的日志

 7、修改配置

打开官方提供的nlog.config  配置参考 https://github.com/NLog/NLog/wiki/Configuration-file

子节点<target>  配置参考 https://nlog-project.org/config/?tab=targets

属性Layout表示输出文本格式 配置参考 https://nlog-project.org/config/?tab=layouts

子节点<rule>  日志的路由表  顺序是从上往下 一个<logger>就是一个路由信息

  1. 日志级别:Trace >Debug> Information >Warn> Error> Fatal
    <logger>属性:
    name - 日志源/记录者的名字 (允许使用通配符*)
  2. minlevel 匹配日志范围的最低级别
  3. maxlevel 匹配日志范围的最高级别
  4. level 单一日志级别
  5. levels 一系列日志级别,由逗号分隔
  6. writeTo 日志应该被写入的目标,由逗号分隔,与target的你name对应
  7. final true标记当前规则为最后一个规则。其后的logger不会运行

附最后的配置文档

  1. <?xml version="1.0" encoding="utf-8" ?>
  2.  
  3. <nlog xmlns = "http://www.nlog-project.org/schemas/NLog.xsd"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. >
  6.  
  7. <!-- the targets to write to -->
  8. <targets>
  9. <!-- write logs to file -->
  10. <target xsi:type="File" name="allfile" fileName="log\${shortdate}-All.log"
  11. layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}}|${logger} |${message} ${exception:format=tostring}" />
  12.  
  13. <!-- another file log, only own logs.Uses some ASP.NET core renderers -->
  14. <target xsi:type="File" name="errorfile" fileName="log\${shortdate}-Error.log"
  15. layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring} | url: ${aspnet-request-url} | action: ${aspnet-mvc-action} | ${callsite}" />
  16.  
  17. <target xsi:type="File" name="taskfile" fileName="log\${shortdate}-Warn.log"
  18. layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring} | url: ${aspnet-request-url} | action: ${aspnet-mvc-action} | ${callsite}" />
  19.  
  20. <target xsi:type="File" name="runfile" fileName="log\${shortdate}-Info.log"
  21. layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring} | url: ${aspnet-request-url} | action: ${aspnet-mvc-action} | ${callsite}" />
  22.  
  23. </targets>
  24.  
  25. <!-- rules to map from logger name to target -->
  26. <rules>
  27. <!--All logs, including from Microsoft-->
  28. <logger name = "*" minlevel="Trace" writeTo="allfile" />
  29. <!--Skip non-critical Microsoft logs and so log only own logs-->
  30. <logger name = "*" levels="Error,Warn,Critical" writeTo="errorfile" />
  31. <logger name = "*" level="Info" writeTo="taskfile" />
  32. <logger name = "*" level="Warn" writeTo="runfile" final="true"/>
  33.  
  34. </rules>
  35. </nlog>

nlog.config

参考github: https://github.com/nlog/nlog/wiki

.net core 2.1 Nlog.Web.AspNetCore Nlog日志的更多相关文章

  1. .net core 3.1 使用nlog记录日志 NLog.Web.AspNetCore

    背景 .net core 中已经集成了log的方法, 但是只能控制台输出不能写入文件等等. 常见第三方的的日志工具包括log4net, nlog等等, 本文介绍nlog 一. 引用程序集, nuget ...

  2. ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件

    应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET ...

  3. .Net Core(.NET6)中接入Log4net和NLog进行日志记录

    一.接入Log4net 1.按日期和大小混合分割日志 nuget包安装 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 配置文 ...

  4. ASPNETCore开源日志面板 :LogDashboard

    LogDashboard logdashboard是在github上开源的aspnetcore项目, 它旨在帮助开发人员排查项目运行中出现错误时快速查看日志排查问题 通常我们会在项目中使用nlog.l ...

  5. 微服务日志之.NET Core使用NLog通过Kafka实现日志收集

    一.前言 NET Core越来越受欢迎,因为它具有在多个平台上运行的原始.NET Framework的强大功能.Kafka正迅速成为软件行业的标准消息传递技术.这篇文章简单介绍了如何使用.NET(Co ...

  6. .NET Core使用NLog通过Kafka实现日志收集

    微服务日志之.NET Core使用NLog通过Kafka实现日志收集 https://www.cnblogs.com/maxzhang1985/p/9522017.html 一.前言 NET Core ...

  7. 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】

    Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...

  8. 如何利用NLog输出结构化日志,并在Kibana优雅分析日志?

    上文我们演示了使用NLog向ElasticSearch写日志的基本过程(输出的是普通文本日志),今天我们来看下如何向ES输出结构化日志.并利用Kibana中分析日志. NLog输出结构化日志 Elas ...

  9. ASP.NET Core MVC中构建Web API

    在ASP.NET CORE MVC中,Web API是其中一个功能子集,可以直接使用MVC的特性及路由等功能. 在成功构建 ASP.NET CORE MVC项目之后,选中解决方案,先填加一个API的文 ...

随机推荐

  1. ImSQL:海量数据,可信存储

    数据造假.数据不可信等问题的存在,给金融监管及风控等众多应用场景带来了严峻的挑战,也正成为阻碍数据大规模互联互通.共享共用的一大障碍.数据的真实可信问题长期影响着社会的各个领域,在更依赖数据的人工智能 ...

  2. 基于webpack实现多html页面开发框架六 提取公共代码

    一.解决什么问题 1.如果a.js和b.js都引用了common.js,那在打包的时候common.js会被重复打入到a.js和b.js,造成重复打包 2.单独打包common.js对性能有帮助,浏览 ...

  3. eclipse color theme 离线安装方法以及jar包

    1.    用户可以点击下载eclipse-color-theme-update-site.zip或者下载我已经下载好的color jar包 2.    把文件com.github.eclipseco ...

  4. git 使用详解(8)—— 分支HEAD、branch/checkout

    有人把 Git 的分支模型称为"必杀技特性",而正是因为它,将 Git 从版本控制系统家族里区分出来.Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎 ...

  5. jQuery中的层级选择器

    话不多说,请看效果: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  6. Python 3 对象关系映射(ORM)

    ORM 对象关系映射 Object Relational Mapping 表 ---> 类 字段 ---> 属性 记录 ---> 对象 # mysql_client.py impor ...

  7. Orleans[NET Core 3.1] 学习笔记(二)Hello World

    项目结构 开始Orleans之前,我们都知道Orleans主要可以分为俩部分,Host和Client. 所以我们可以创建如下的项目结构: IGrain 一个包含Grain接口的库(.NET Stand ...

  8. Flume理论研究与实验

    一.理论研究 1.1 总览 Flume是一个分布式的可靠的日志收集系统,主要是用于从各种数据源收集.聚合并移动大批量的日志数据到存储系统:它本身具有许多故障转移和恢复机制,具有强大的容错能力:它使用下 ...

  9. python学习-def1

    # 4.可变参数\return# 可变参数:参数个数不固定 .调用的时候来确定有几个参数.# 第一种:*args 在函数内部,是以元组的形式来表示.def my_args(*args): # 放在位置 ...

  10. Linux之CentOS设置别名与屏蔽别名

    一.环境 CentOS6.8 二.设置别名 ◆别名功能:让grep符合的关键字高亮 1.临时生效 [root@localhost ~]#alias grep="grep --color=au ...