配置過程
-
安裝NLog
通過Nuget進行集成(NuGet Gallery | NLog.Web.AspNetCore 4.14.0)
通過命令行安裝
Install-Package NLog.Web.AspNetCore -Version 4.14.0
通過可視化管理工具查找並安裝
NLog.Web.AspNetCore
-
修改Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((context, builder) => { // 適配原來的Log配置 builder.AddConfiguration(context.Configuration.GetSection("Logging")); builder.AddConsole(); builder.AddDebug(); builder.AddEventSourceLogger(); // 以下關鍵配置 builder.AddNLogWeb(); builder.AddNLog(); // 關鍵配置結束 }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://*:5000"); webBuilder.UseStartup<Startup>(); });
-
配置Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { ...... // 在UseEndpoints之前增加如下增加對部分 Layout renderers 的支持 app.Use(async (context, next) => { context.Request.EnableBuffering(); await next(); }); ...... }
-
增加NLog.config
注意此文件配置為復制到輸出目錄
每一項的配置可以參考下方的NLog配置項<?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" throwConfigExceptions="true"> <targets> <!-- 文件持久化 --> <target name="f1" xsi:type="File" layout="PROJECT:${iis-site-name}${newline} REQUEST:${newline} ${aspnet-request-method} ${aspnet-request-url}${newline} QUERYSTRING:${newline} ${aspnet-request-querystring}${newline} HEADERS:${newline} ${aspnet-request-headers}${newline} FORM:${newline} ${aspnet-request-form}${newline} POSTED-BODY:${newline} ${aspnet-request-posted-body}${newline} COOKIE:${newline} ${aspnet-request-cookie}${newline}${newline} ${longdate}|${uppercase:${level}}|${logger}${newline}${newline} ${message}${newline}${newline} ${exception:format=ToString}" fileName="Logs\nlog-all-${shortdate}.log" /> <!-- 郵件支持 --> <target xsi:type="Mail" name="m1" html="true" replaceNewlineWithBrTagInHtml="true" addNewLines="true" subject="發送郵件主題:[測試項目][${level}]${message}" to="接收人郵箱" from="發送人郵箱" body="PROJECT:${iis-site-name}${newline} REQUEST:${newline} ${aspnet-request-method} ${aspnet-request-url}${newline} QUERYSTRING:${newline} ${aspnet-request-querystring}${newline} HEADERS:${newline} ${aspnet-request-headers}${newline} FORM:${newline} ${aspnet-request-form}${newline} POSTED-BODY:${newline} ${aspnet-request-posted-body}${newline} COOKIE:${newline} ${aspnet-request-cookie}${newline}${newline} ${longdate}|${uppercase:${level}}|${logger}${newline}${newline} ${message}${newline}${newline} ${exception:format=ToString}" smtpUserName="發送人賬號" enableSsl="true" smtpPassword="發送人密碼" smtpAuthentication="Basic" smtpServer="發送郵箱的smtp" smtpPort="發送郵箱的smtp端口" /> </targets> <rules> <logger name="*" minlevel="Error" writeTo="f1" /> <logger name="*" minlevel="Error" maxlevel="Error" writeTo="m1" /> </rules> </nlog>
相關資源
NLog官網:NLog (nlog-project.org)
NLog配置項:Config | NLog (nlog-project.org)