.net core

asp.net core 使用 NLog日志

2018-12-24  本文已影响0人  _sands

NLog是一个配置灵活的日志记录类库,拥有输出日志到文件、存储入库、发送到udp地址的高级功能

1 添加 nlog nuget包

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

      internalLogLevel="Warn"

      internalLogFile="internal-nlog.txt">

  <targets>

    <target xsi:type="File" name="file" fileName="nlog-all-${shortdate}.log"

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

    <target xsi:type="File" name="exception" fileName="nlog-exception-${shortdate}.log"

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

    <target xsi:type="File" name="trace" fileName="nlog-trace-${shortdate}.log"

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

    <target xsi:type="Null" name="blackhole" />

  </targets>

  <rules>

    <logger name="*" minlevel="Trace" writeTo="file" />

    <!--日志级别:Trace -》Debug-》 Information -》Warning-》 Error-》 Critical-->

    <!--排除系统日志-->

    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />

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

    <logger name="*" minlevel="Error" maxlevel="Error" writeTo="exception" />

  </rules>

</nlog>

设置配置文件属性:始终复制

3修改Startup.cs文件

  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

        {

            if (env.IsDevelopment())

            {

                app.UseDeveloperExceptionPage();

            }

            else

            {

                app.UseExceptionHandler("/Home/Error");

                app.UseHsts();

            }

            //添加nlog支持

            loggerFactory.AddNLog();

            app.UseHttpsRedirection();

            app.UseStaticFiles();

            app.UseCookiePolicy();

            app.UseMvc(routes =>

            {

                routes.MapRoute(

                    name: "default",

                    template: "{controller=Home}/{action=Index}/{id?}");

            });

        }

4在控制器代码中使用 Microsoft.Extensions.Logging;输出日志

public class HomeController : Controller

{

        //定义logger接口

        private static ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)

        {

            _logger = logger;

        }

        public IActionResult Index()

        {

            _logger.LogInformation("info test");

            _logger.LogTrace("trace test");

            _logger.LogError("error test");

            return View();

        }

}

5 使用nlog自己的logger输出日志, 这样就不用使用依赖注入了,在一些特定的环境下一样可以使用

  public class NLogController : Controller

    {

        //定义logger接口

        private static NLog.Logger _logger;

        public NLogController()

        {

            _logger = NLog.LogManager.GetCurrentClassLogger();

        }

        public IActionResult Index()

        {

            _logger.Error("nlog test");

            return Content("nlog");

        }

    }

6在站点根目录下查看日志文件

aspnetcore_nlog\aspnetcore_nlog\bin\Debug\netcoreapp2.1

上一篇下一篇

猜你喜欢

热点阅读