欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

netcore的NLog使用小记

程序员文章站 2022-03-13 17:46:06
1. 启动应用程序日志配置 修改Program.cs,在WebHostBuilder构建时配置日志 public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(ar ......

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(可以忽略第一步)