NLog-ASP.NET Core 5入门
生活随笔
收集整理的這篇文章主要介紹了
NLog-ASP.NET Core 5入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、創建一個新的ASP.NET Core項目
在Visual Studio 2019中。需要版本16.8+
2、手動或使用NuGet在csproj中添加依賴項
安裝最新版本:
NLog.Web.AspNetCore?4.9+
如有可能,更新NLog軟件包
在csproj中:
<ItemGroup><PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" /><PackageReference Include="NLog" Version="4.7.6" /> </ItemGroup>3、創建一個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"internalLogLevel="Info"internalLogFile="c:\temp\internal-nlog.txt"><!-- enable asp.net core layout renderers --><extensions><add assembly="NLog.Web.AspNetCore"/></extensions><!-- the targets to write to --><targets><!-- write logs to file --><target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" /><!-- another file log, only own logs. Uses some ASP.NET core renderers --><target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" /></targets><!-- rules to map from logger name to target --><rules><!--All logs, including from Microsoft--><logger name="*" minlevel="Trace" writeTo="allfile" /><!--Skip non-critical Microsoft logs and so log only own logs--><logger name="Microsoft.*" maxlevel="Info" final="true" /> <!-- BlackHole without writeTo --><logger name="System.Net.Http.*" maxlevel="Info" final="true" /> <!-- BlackHole without writeTo --><logger name="*" minlevel="Trace" writeTo="ownFile-web" /></rules> </nlog>請注意,如果刪除所有其他LoggingProviders(如控制臺)并且僅使用NLog,則可能必須特別注意Hosting Lifetime Startup Messages。因為這可能導致托管環境(Visual Studio / Docker / Azure容器)看不到已啟動的應用程序。
4、更新program.cs
更新program.cs
using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using NLog.Web;namespace ASP.NET_Core_5_NLog_Example {public class Program{public static void Main(string[] args){var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();try{logger.Debug("init main");CreateHostBuilder(args).Build().Run();}catch (Exception exception){//NLog: catch setup errorslogger.Error(exception, "Stopped program because of exception");throw;}finally{// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)NLog.LogManager.Shutdown();}}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).ConfigureLogging(logging =>{logging.ClearProviders();logging.SetMinimumLevel(LogLevel.Trace);}).UseNLog(); // NLog: Setup NLog for Dependency injection} }5、配置appsettings.json / appsettings.Development.json
中指定的日志記錄配置appsettings.json會覆蓋對的任何調用SetMinimumLevel。因此"Default":,請根據您的需要刪除或正確調整它。
{"Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Trace","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"AllowedHosts": "*" }切記還要更新任何特定于環境的配置,以免引起任何意外。前任appsettings.Development.json
6、寫日志
將ILogger注入您的控制器中:
using Microsoft.Extensions.Logging;public class HomeController : Controller {private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;_logger.LogDebug(1, "NLog injected into HomeController");}public IActionResult Index(){_logger.LogInformation("Hello, this is the index!");return View();}7、示例輸出
啟動ASP.NET Core網站時,我們得到兩個文件:
2020-12-29 16:47:02.5291||DEBUG|ASP.NET_Core_5_NLog_Example.Program|init main |url: |action: 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 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 2020-12-29 16:47:02.5291||DEBUG|ASP.NET_Core_5_NLog_Example.Program|init main 2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Application started. Press Ctrl+C to shut down. 2020-12-29 16:47:03.5260||INFO|Microsoft.Hosting.Lifetime|Hosting environment: Development 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 2020-12-29 16:47:03.5943|1|DEBUG|ASP.NET_Core_5_NLog_Example.Controllers.HomeController|NLog injected into HomeController 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入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用BeetleX网关对Web应用进行灰
- 下一篇: ASP.NET Core中间件初始化探究