什么是NLog?

NLog is a free logging platform for .NET with rich log routing and management capabilities. It makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity.

It can process diagnostic messages emitted from any .NET language, augment them with contextual information, format them according to your preference and send them to one or more targets such as file or database.

NLog在GitHub的官网:https://github.com/NLog

NLog for .NET Core:https://github.com/NLog/NLog.Extensions.Logging

创建一个.NET Core Console 应用

使用CLI(Command Line Interface)创建一个example程序:

  • dotnet new
  • dotnet restore
  • dotnet run

这些命令行的具体意思这里就不再赘述。

更改project.json的配置

主要是新增了NLog相关的配置:

  • NLog的包引用;
  • 程序发布时包含NLog的配置文件。

新增NLog的配置文件

在程序的根目录下新增NLog的配置文件: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="Warn"internalLogFile="internal-nlog.txt"><!-- define various log targets --><targets><!-- write logs to file --><target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" /><target xsi:type="File" name="ownFile-web" fileName="nlog-own-${shortdate}.log"layout="${longdate}|${threadid}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|  ${message} ${exception}" /><target xsi:type="Null" name="blackhole" /></targets><rules><!--Skip Microsoft logs and so log only own logs--><logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" /><!--All logs, including from Microsoft--><logger name="*" minlevel="Trace" writeTo="allfile" /><logger name="*" minlevel="Info" writeTo="ownFile-web" /></rules>
</nlog>

在Startup类中注册NLog的MiddleWare

 1 using Microsoft.AspNetCore.Builder;
 2 using Microsoft.AspNetCore.Hosting;
 3 using Microsoft.AspNetCore.Http;
 4 using Microsoft.Extensions.Logging;
 5 using NLog.Extensions.Logging;
 6
 7 namespace ConsoleApplication
 8 {
 9     public class Startup
10     {
11         public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
12         {
13             // Add NLog to ASP.NET Core
14             loggerFactory.AddNLog();
15
16             // configure nlog.config in your project root
17             env.ConfigureNLog("nlog.config");
18
19             app.Run(context =>
20             {
21                 return context.Response.WriteAsync("Hello World!!");
22             });
23         }
24     }
25 }

在入口类中记录日志

 1 using System.Threading;
 2 using Microsoft.AspNetCore.Hosting;
 3 using NLog;
 4
 5 namespace ConsoleApplication
 6 {
 7     public class Program
 8     {
 9         private static Logger logger = LogManager.GetCurrentClassLogger();
10         public static void Main(string[] args)
11         {
12             logger.Info("Server is running...");
13             logger.Info(string.Format("Current Thead Id:{0}", Thread.CurrentThread.ManagedThreadId));
14             var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>().Build();
15             host.Run();
16         }
17     }
18 }

运行程序后会在主目录下生成2个日志文件:

转载于:https://www.cnblogs.com/frankyou/p/5694306.html

NLog在.NET Core Console Apps中的简单应用相关推荐

  1. .NET CORE——Console中使用依赖注入

    我们都知道,在 ASP.NET CORE 中通过依赖注入的方式来使用服务十分的简单,而在 Console 中,其实也只是稍微绕了个小弯子而已.不管是内置 DI 组件或者第三方的 DI 组件(如Auto ...

  2. async/await 的基本实现和 .NET Core 2.1 中相关性能提升

    前言 这篇文章的开头,笔者想多说两句,不过也是为了以后再也不多嘴这样的话. 在日常工作中,笔者接触得最多的开发工作仍然是在 .NET Core 平台上,当然因为团队领导的开放性和团队风格的多样性(这和 ...

  3. 在ASP.NET Core MVC中构建简单 Web Api

    Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 ...

  4. ASP.NET Core - 在ActionFilter中使用依赖注入

    上次ActionFilter引发的一个EF异常,本质上是对Core版本的ActionFilter的知识掌握不够牢固造成的,所以花了点时间仔细阅读了微软的官方文档.发现除了IActionFilter.I ...

  5. 将终结点图添加到你的ASP.NET Core应用程序中

    在本文中,我将展示如何使用DfaGraphWriter服务在ASP.NET Core 3.0应用程序中可视化你的终结点路由.上面文章我向您演示了如何生成一个有向图(如我上篇文章[译]使用DOT语言和G ...

  6. 在.Net Core 3.0中尝试新的System.Text.Json API

    .NET Core 3.0提供了一个名为System.Text.Json的全新命名空间,它支持reader/writer,文档对象模型(DOM)和序列化程序.在此博客文章中,我将介绍它如何工作以及如何 ...

  7. .NET Core WEB API中接口参数的模型绑定的理解

    在.NET Core WEB API中参数的模型绑定方式有以下表格中的几种: 微软官方文档说明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-a ...

  8. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...

  9. ASP.Net Core 2.0中的Razor Page不是WebForm

    随着.net core2.0的发布,我们可以创建2.0的web应用了.2.0中新东西的出现,会让我们忘记老的东西,他就是Razor Page.下面的这篇博客将会介绍ASP.Net Core 2.0中的 ...

  10. EF Core 2.0中Transaction事务会对DbContext底层创建和关闭数据库连接的行为有所影响...

    数据库 我们先在SQL Server数据库中建立一个Book表: CREATE TABLE [dbo].[Book]([ID] [int] IDENTITY(1,1) NOT NULL,[BookNa ...

最新文章

  1. BCH踏着优化升级路线,在数字货币界声名鹊起
  2. java多态性详解——父类引用子类对象
  3. po 时不生效时, 不要用点方法
  4. 最小生成树--prim+优先队列优化模板
  5. Rotation Matching CodeForces - 1365C(贪心)
  6. 函数指针指向类的静态成员函数
  7. ESS控制台发布新功能:创建多实例规格的伸缩配置
  8. apache的tomcat负载均衡和集群配置
  9. Go、Java 和 Rust 的比较
  10. filters.revealTrans.Transition用法
  11. 知乎高赞:当update修改数据与原数据相同时会再次执行吗?
  12. android调用邮件应用发送email
  13. sql季度函数_SparkSql几个常用函数
  14. batchsize和模型精度的影响
  15. 手持普通计算机怎么开根号,数学里怎么开根号?具体方法
  16. NSCalendar 日历类
  17. SLAM学习(SL)基于特征的前度匹配(LOAM系列)
  18. Blos查看计算机硬盘,bios查看硬盘损坏
  19. 简单易懂的颜色透明度计算
  20. noindex如何使用?

热门文章

  1. jQuery知识点学习整理
  2. 本机搭建PHP环境全教程(图文)
  3. 深度剖析 C++ 对象池自动回收技术实现
  4. .Net中常用的几种ActionResult
  5. ShortCut Exploit Builder
  6. 去掉matlab图片空白边缘
  7. 我的博客请查看新浪博客内容
  8. APUE读书笔记-18终端输入输出-09终端标识
  9. [ZT]C#的多线程机制探索(1)
  10. [JNI] 开发基础 (2) 指针