本文主要介绍.NET Core和ASP.NET Core的日志框架Nlog,通过Nuget安装的方法和配置文件的配置,以及Nlog的使用的示例代码。

1、NLog的安装

1).NET Core项目

在Nuget管理程序中,搜索'NLog' =》选中然后点击'安装'。然后再搜索"NLog.Extensions.Logging",然后点击安装。

2)ASP .NET Core项目

除上述安装的Nuget包,还需要安装NLog.Web.AspNetCore,同样上述方法,搜索安装即可。

相关文档:VS(Visual Studio)中Nuget的使用

注意:NLog.Config不是必需安装,它是用来生成配置文件的。

2、NLog的配置

1)NLog配置文件

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<targets>
<!--屏幕打印消息-->
<target name="console" xsi:type="ColoredConsole"
layout="${date:format=HH\:mm\:ss}> ${message}"/>
<!--VS输出窗口-->
<target name="debugger" xsi:type="Debugger"
layout="${date:format=HH\:mm\:ss} | ${level:padding=-5} | ${message}" />
<!--保存至文件-->
<target name="error_file" xsi:type="File" archiveAboveSize="2000000" maxArchiveFiles="30"
fileName="${basedir}/Logs/Error/${shortdate}/error.txt"
layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}" />
<!--保存至文件-->
<target name="info_file" xsi:type="File" archiveAboveSize="2000000" maxArchiveFiles="30"
fileName="${basedir}/Logs/Info/${shortdate}/info.txt"
layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}" />
</targets>
<rules>
<!--<logger name="*" writeTo="console" />-->
<logger name="*" minlevel="Debug" writeTo="debugger" />
<logger name="*" minlevel="Error" writeTo="error_file" />
<logger name="*" minlevel="Info" writeTo="info_file" />
</rules>
</nlog>

2).NET Core控制台项目

本文示例不使用自动生成配置文件,通过上述配置文件内容,在Program.cs的同级目录,新建NLog.Config配置文件。在新建的NLog.config配置文件上,点击"鼠标右键"=》点击"属性"=》在"复制到输出目录"中=》选择"始终复制"。

3)ASP .NET Core项目

依照上述步骤新建NLog.Config配置文件。

3、NLog使用代码

1).NET Core控制台项目

using System;
using System.Threading.Tasks;
using NLog;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载NLog.config配置文件
            LogManager.LoadConfiguration("NLog.config"); 
            Logger logger = LogManager.GetCurrentClassLogger();
            logger.Trace("Trace Message");
            logger.Debug("Debug Message");
            logger.Info("Info Message");
            logger.Error("Error Message");
            logger.Fatal("Fatal Message");
            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
    }
}

2)ASP .NET Core项目

在项目Startup.cs中修改Configure()方法,具体如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
     {
          //app.UseStaticFiles();
          //使用NLog作为日志记录工具
          loggerFactory.AddNLog();
          //引入Nlog配置文件
          env.ConfigureNLog("NLog.config");
          if (env.IsDevelopment())
          {
             app.UseDeveloperExceptionPage();
          }
          app.UseAuthentication();
          app.UseMvc();
     }

在控制器中的注入代码

public class ValuesController : Controller
    {
        private ILogger<ValuesController> logger;
        public ValuesController(ILogger<ValuesController> _logger)
        {
            logger = _logger;
        }
        // GET api/values
        [HttpGet]
        public string Get()
        {
            logger.LogError("123");
            return "value";
        }
  }

也可以通过private NLog.ILogger logger = NLog.LogManager.GetCurrentClassLogger();这种方式直接使用。