Asp.net Core 3.1 之NLog使用


一、新建解決方案,並初始化默認訪問路由

 二、Nuget引用

三、 更改Program.cs文件

代碼如下:

    public class Program
    {
        public static void Main(string[] args)
        {
            NLogBuilder.ConfigureNLog("nlog.config");
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.SetMinimumLevel(LogLevel.Information);
                    logging.AddConsole();
                }).UseNLog();//其中,UseNLog是拓展方法,需要引入NLog.Web.AspNetCore
    }

 四、新增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>

五、在Controller中的使用

代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace DemoCore.Controllers
{
    [Route("api/[controller]/[action]")]  //Api控制器
    [ApiController]
    public class HomeController : Controller
    {
        private ILogger _logger;
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        // GET: api/<controller>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            _logger.LogInformation("測試一下,不要緊張!");
            return new string[] { "value1", "value2" };
        }   
    }
}

 六、效果預覽

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM