Asp.net Core 之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" };
        }   
    }
}

 六、效果预览

猜你喜欢

转载自www.cnblogs.com/fger/p/12118437.html