zoukankan      html  css  js  c++  java
  • 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:}	estLog	est_logs_${shortdate}.log" 绝对路径 -->
    <targets>
    <target name="logFile"
    xsi:type="File"
    fileName="${}.TestLogDirectory
    elativeTest_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)

  • 相关阅读:
    今日计划
    今日计划
    个人品质
    翻译 《Why Indy?》计划&进度表
    今日计划
    一粒老鼠屎
    开两本字典聊天的感觉
    ObjectiveC初学指南
    todo格式定义
    制作TortoiseSVN最新版本的中文DLL(转)
  • 原文地址:https://www.cnblogs.com/SHa-Jazy/p/15449342.html
Copyright © 2011-2022 走看看