.NET Core 2.0 MVC / Web API使用NLog

.NET Core 2.0 MVC / Web API使用NLog

1. 项目,添加NuGet引用

Install-Package NLog.Web.AspNetCore
​
Install-Package NLog

2. 创建一个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="off"
      internalLogFile="Log\internal-nlog.txt">
  <!--internalLogLevel设置为off,即关闭内部日志记录-->
  <!-- 启用asp.net核心布局渲染器 -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>
​
  <!-- 要写入的目标 -->
  <targets>
    <target xsi:type="File" name="ApiLog" fileName="Log\${shortdate}.log" layout="${longdate} ${level} ${message}"/>
  </targets>
​
  <!-- 从记录器名称映射到目标的规则 -->
  <rules>
    <!--final="true",不指定writeto,表示跳过所有微软相关(Microsoft.*)的日志-->
    <logger name="Microsoft.*" maxlevel="Info" final="true" />
    <!-- 此条表示记录所有日志,并且指定最低和最高日志记录级别,绑定到target——>ApiLog -->
    <logger name="*" minlevel="Trace" maxlevel="Fatal" writeTo="ApiLog" />
  </rules>
</nlog>

创建完毕后,允许nlog.config启用复制到bin文件夹 ,有两种方式,经过本人尝试,建议使用第二种方法,不然Log文件夹会在项目根目录的同一级文件夹中创建

  1. 点击nlog.config,右键——属性——复制到输出目录——始终复制
  2. 编辑.csproj文件,添加以下内容
< ItemGroup >
    < Content  Update = “ nlog.config ”  CopyToOutputDirectory = “ PreserveNewest ” />
  </ ItemGroup >

3.更新Program.cs文件,添加对NLog的引用,并设置日志记录范围

 
public class Program
    {
        public static void Main(string[] args)
        {
            //NLog: 首先设置记录器以捕获所有错误
            var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
            BuildWebHost(args).Run();
​
        }
​
        public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.SetMinimumLevel(LogLevel.Trace);
            })
            .UseNLog()  // NLog: 设置NLog进行依赖注入
            .Build();
    }

4. 在项目中调用

private readonly ILogger<HomeController> _logger;
​
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
​
        public IActionResult Index()
        {
            _logger.LogInformation("Ha ha,I'm Home Index Page");
            return View();
        }

5. 到这里就能在项目的bin\Debug\netcoreapp2.0\Log文件夹下看到你的日志记录了

猜你喜欢

转载自blog.csdn.net/LanSeTianKong12/article/details/84849936