zoukankan      html  css  js  c++  java
  • 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

     

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

  • 相关阅读:
    ASP.NET Core学习——7
    ASP.NET Core学习——6
    ASP.NET Core学习——6
    ASP.NET Core学习——5
    ASP.NET Core学习——4
    平衡的括号(名字怪怪的~)
    找复合单词
    卡片游戏
    Ducci 序列
    卡片游戏O(∩_∩)O
  • 原文地址:https://www.cnblogs.com/Rombo713/p/10727862.html
Copyright © 2011-2022 走看看