一篇关于NLog-ASP.NET Core 5入门

本文转载自微信公众号「后端Q」,作者conan。转载本文请联系后端Q公众号。

为沙坡头等地区用户提供了全套网页设计制作服务,及沙坡头网站建设行业解决方案。主营业务为成都网站设计、成都做网站、沙坡头网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1、创建一个新的ASP.NET Core项目

在Visual Studio 2019中。需要版本16.8+

2、手动或使用NuGet在csproj中添加依赖项

安装最新版本:

  • NLog.Web.AspNetCore 4.9+
  • 如有可能,更新NLog软件包

在csproj中:

 
 
 
  1.  
  2.    
  3.    
  4.  

3、创建一个nlog.config文件。

在项目的根目录中创建nlog.config(全部小写)文件。

我们使用以下示例:

 
 
 
  1.  
  2.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.       autoReload="true" 
  4.       internalLogLevel="Info" 
  5.       internalLogFile="c:\temp\internal-nlog.txt"> 
  6.  
  7.    
  8.    
  9.      
  10.    
  11.  
  12.    
  13.    
  14.      
  15.     
  16.             layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" /> 
  17.  
  18.      
  19.     
  20.             layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" /> 
  21.    
  22.  
  23.    
  24.    
  25.      
  26.      
  27.  
  28.      
  29.       
  30.       
  31.  
  32.      
  33.    
  34.  

请注意,如果删除所有其他LoggingProviders(如控制台)并且仅使用NLog,则可能必须特别注意Hosting Lifetime Startup Messages。因为这可能导致托管环境(Visual Studio / Docker / Azure容器)看不到已启动的应用程序。

4、更新program.cs

更新program.cs

 
 
 
  1. using Microsoft.AspNetCore.Hosting; 
  2. using Microsoft.Extensions.Hosting; 
  3. using Microsoft.Extensions.Logging; 
  4. using System; 
  5. using NLog.Web; 
  6.  
  7. namespace ASP.NET_Core_5_NLog_Example 
  8.     public class Program 
  9.     { 
  10.         public static void Main(string[] args) 
  11.         { 
  12.             var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); 
  13.             try 
  14.             { 
  15.                 logger.Debug("init main"); 
  16.                 CreateHostBuilder(args).Build().Run(); 
  17.             } 
  18.             catch (Exception exception) 
  19.             { 
  20.                 //NLog: catch setup errors 
  21.                 logger.Error(exception, "Stopped program because of exception"); 
  22.                 throw; 
  23.             } 
  24.             finally 
  25.             { 
  26.                 // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux) 
  27.                 NLog.LogManager.Shutdown(); 
  28.             } 
  29.         } 
  30.  
  31.         public static IHostBuilder CreateHostBuilder(string[] args) => 
  32.             Host.CreateDefaultBuilder(args) 
  33.                 .ConfigureWebHostDefaults(webBuilder => 
  34.                 { 
  35.                     webBuilder.UseStartup(); 
  36.                 }) 
  37.                 .ConfigureLogging(logging => 
  38.                 { 
  39.                     logging.ClearProviders(); 
  40.                     logging.SetMinimumLevel(LogLevel.Trace); 
  41.                 }) 
  42.                 .UseNLog();  // NLog: Setup NLog for Dependency injection 
  43.     } 

5、配置appsettings.json / appsettings.Development.json

中指定的日志记录配置appsettings.json会覆盖对的任何调用SetMinimumLevel。因此"Default":,请根据您的需要删除或正确调整它。

 
 
 
  1.   "Logging": { 
  2.     "IncludeScopes": false, 
  3.     "LogLevel": { 
  4.       "Default": "Trace", 
  5.       "Microsoft": "Warning", 
  6.       "Microsoft.Hosting.Lifetime": "Information" 
  7.     } 
  8.   }, 
  9.   "AllowedHosts": "*" 

切记还要更新任何特定于环境的配置,以免引起任何意外。前任appsettings.Development.json

6、写日志

将ILogger注入您的控制器中:

 
 
 
  1. using Microsoft.Extensions.Logging; 
  2.  
  3. public class HomeController : Controller 
  4.     private readonly ILogger _logger; 
  5.  
  6.     public HomeController(ILogger logger) 
  7.     { 
  8.         _logger = logger; 
  9.         _logger.LogDebug(1, "NLog injected into HomeController"); 
  10.     } 
  11.  
  12.     public IActionResult Index() 
  13.     { 
  14.         _logger.LogInformation("Hello, this is the index!"); 
  15.         return View(); 
  16.     } 

7、示例输出

启动ASP.NET Core网站时,我们得到两个文件:

 
 
 
  1. 2020-12-29 16:47:02.5291||DEBUG|ASP.NET_Core_5_NLog_Example.Program|init main |url: |action:  
  2. 2020-12-29 16:47:03.5943|1|DEBUG|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|NLog injected into HomeController |url: https://localhost/|action: Index 
  3. 2020-12-29 16:47:03.5943||INFO|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|Hello, this is the index! |url: https://localhost/|action: Index 
 
 
 
  1. 2020-12-29 16:47:02.5291||DEBUG|ASP.NET_Core_5_NLog_Example.Program|init main  
  2. 2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Application started. Press Ctrl+C to shut down.  
  3. 2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Hosting environment: Development  
  4. 2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Content root path: D:\nlog\NLog.Web\examples\ASP.NET Core 5\ASP.NET Core 5 NLog Example  
  5. 2020-12-29 16:47:03.5943|1|DEBUG|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|NLog injected into HomeController  
  6. 2020-12-29 16:47:03.5943||INFO|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|Hello, this is the index! 

当前标题:一篇关于NLog-ASP.NET Core 5入门
文章分享:http://www.shufengxianlan.com/qtweb/news27/62977.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联