NLog如何打印日志(.Net5)

一、创建项目

  首先创建.Net5 "ASP.NET Core Web应用”的项目NLogTest5;

二、添加引用

  在依赖项上右击,

 

 

 

选择 “管理NuGet程序包(N)”

 

 

在浏览下,输入“NLog.Web.AspNetCore”,右边选择版本“1.14.0”,点击“安装”;

 

 

 

安装完成后显示如下(有NLog.Web.AspNetCore(4.14.0)):

 

 

三、创建配置文件

  接着在项目上右击,选择“添加”,点击“新建项”

 

 

之后,找到“web配置文件”,名称输入“nlog.config”,点击“添加”;

 

 

如此“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">
<variable name="logDirectory" value="${basedir}/logs"/>
<!--fileName="${D:}\testLog\test_logs_${shortdate}.log" 绝对路径 -->
<targets>
<target name="logFile"
xsi:type="File"
fileName="${}.\TestLogDirectory\relativeTest_logs_${shortdate}.log" 
layout="${longdate}|${logger}|${uppercase:${level}}|${message}${exception}"/>
<target name="logConsole" xsi:type="Console" />
</targets>
<rules>
<logger name="Microsoft.*" minlevel="Trace" writeTo="logConsole" final="true"/>
<logger name="*" minlevel="Trace" writeTo="logFile"/>
</rules>
</nlog>

 

四、创建控制器

  在项目文件上右击,添加,新建文件夹,文件夹名称取名“Controllers”;

 

 

 

接着创建控制器(步骤如下图),控制器名称为“NLogController”(用于测试),最后点击“添加”;

 

 

 

 

 

 

 

 

双击刚刚创建好的NLogController文件,

 

 

 往里面写入如下代码

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

#region 引用Nlog
using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;
using NLog.Web;
#endregion

namespace NLogTest5.Controllers
{
    public class NLogController : Controller
    {
        public NLogController(ILogger<Program> logger)
        {
            Logger = logger;
        }

        public ILogger Logger { get; }

         
        [Route("/NLog/Index")]
        public IActionResult Index()
        {
            Logger.LogError($"    {DateTime.Now}:  testLog Error !");
            return View();
        }
    }
}

  

五、在Program和Startup进行相应的依赖注入和配置

  双击Program,添加代码“ .UseNLog();//配置使用NLog”

 

 

 

 

 

 Program的代码如下:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace NLogTest5
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
            .UseNLog();//配置使用NLog
    }
}

双击“Startup”

 

 

 写入如下代码:

  

using AutoMapper;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Formatters;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;
using NLogTest5.Filters;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace NLogTest5
{
    public class Startup
    { 

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages(); 
            services.AddMvc(config =>
            {
                config.EnableEndpointRouting = false; 

                //config.Filters.Add<JsonExceptionFilter>();

                config.ReturnHttpNotAcceptable = true;
                config.OutputFormatters.Add(new XmlSerializerOutputFormatter());
            }).SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app,
            IWebHostEnvironment env, 
            ILoggerFactory loggerFactory
            )
        {
            #region 默认
            //if (env.IsDevelopment())
            //{
            //    app.UseDeveloperExceptionPage();
            //}
            //else
            //{
            //    app.UseExceptionHandler("/Error");
            //}

            //app.UseStaticFiles();

            //app.UseRouting();

            //app.UseAuthorization();

            //app.UseEndpoints(endpoints =>
            //{
            //    endpoints.MapRazorPages();
            //}); 
            #endregion

            loggerFactory.AddNLog();
            env.ContentRootPath = "nlog.config";
            app.UseHttpsRedirection();
            app.UseMvc();
        }
    }
}

 

六、运行项目 

  在浏览器上输入http://localhost:14206/NLog/Index,将会出现异常;

 

 

再来看文件夹是否有了日志(如下图,有日志了)

 

 

 

 

 

 

打开日志,下图是我测试出来的日志记录,表示日志打印成功!

 

 

 

 

 

(关注到其他的NLog: https://www.cnblogs.com/zhangchengye/p/6297685.html)

posted @ 2021-10-23 19:57  艾特-天空之海  阅读(346)  评论(1编辑  收藏  举报