netcore的NLog使用小记

1. 启动应用程序日志配置

修改Program.cs,在WebHostBuilder构建时配置日志

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
  .UseStartup<Startup>()
  .ConfigureLogging(logging =>
  {
    logging.ClearProviders();
    logging.SetMinimumLevel(LogLevel.Information);
    logging.AddConsole();
  }).UseNLog();

其中,UseNLog是拓展方法,需要引入NLog.Web.AspNetCore

 

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">

  <targets>

    <target name="defaultlog" xsi:type="File" keepFileOpen="false" encoding="utf-8"

      fileName="${basedir}/logs/${level}/${shortdate}.log"

      maxArchiveFiles="100"

      layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />

    <!--fileName值——表示在程序运行目录,分日志级别按天写入日志文件-->
    <!--maxArchiveFiles值——日志文件最大数量,超出则删除最早的文件-->
    <!--layout值——日志内容格式:时间+日志级别+LoggerName+日志内容-->

 

  </targets>

  <rules>

    <!--支持将任意级别、任意LoggerName的日志写入target:defaultlog-->

    <!--其中*就表示任意,可以改为"项目命名空间.*",则只输出对应命名空间下的日志。在Info级别尤为明显-->

    <logger name="*" minlevel="trace" writeTo="defaultlog" />

  </rules>

</nlog>

 

3. 实例化并使用

1)在控制器的构造方法赋值ILogger(亲测可用)

  private readonly ILogger<HomeController> _logger;

  public HomeController(ILogger<HomeController> logger)

  { this._logger = logger; }

  _logger.Info("一个Info级别的测试样例");
  _logger.Error("一个Error级别的测试样例");

2)直接使用NLog.LogManager(可以忽略第一步)

  //使用GetLogger获取ILogger(暂无法成功输出日志到文件)

  //var logger = NLog.LogManager.GetLogger(LoggerName);

  //使用GetCurrentClassLogger获取ILogger

  var logger = NLog.LogManager.GetCurrentClassLogger();

  logger.Info("一个Info级别的测试样例");
  logger.Error("一个Error级别的测试样例");

  其中,LoggerName可以为当前调用的控制器名称,也可以是当前调用的方法名称,甚至任意文本。它主要作用是:显示在文件中,方便查看报错位置

 

本文学习自:

https://www.cnblogs.com/lonelyxmas/p/10669153.html

 

越努力越幸运,努力需要自制,希望自己能够有更强的自制力!感恩自信自律!

posted @ 2019-04-18 10:02  DoKey713  阅读(838)  评论(1编辑  收藏  举报