目錄
一、注入依賴和使用 logger
二、配置記錄文件
1.安裝插件 NLog
2.創建 nlog.config 配置文件
3. Programs配置日志信息
4. 設置 appsettings.json 的 LogLevel
5. 日志設定文件和日志級別的優先級
(1)常見的日志級別優先級
(2)日志設定文件優先級
三、方便調試查看日志
一、注入依賴和使用 logger
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Mvc;namespace ASPNetAPI.Controllers
{public class ErrorController控制器名: Controller{private ILogger<ErrorController控制器名> logger; public ErrorController控制器名(ILogger<ErrorController控制器名> logger) { // 構造函數里注入ILogger服務(控制器名作為泛型參數)this.logger = logger;}}[AllowAnonymous][Route("Error")] public IActionResult Error(){var exceptionHandlerPathFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();// 記錄loggerlogger.LogError($"路徑:{exceptionHandlerPathFeature.Path},產生錯誤:{exceptionHandlerPathFeature.Error}");return View("Error");}}
二、配置記錄文件
1.安裝插件 NLog
??????? VS菜單的“專案” > 管理NuGet套件 > 查找到NLog.Web.AspNetCore,安裝。
2.創建 nlog.config 配置文件
(1)文件名是nlog.config
(2)放在專案根目錄下(項目啟動時自動加載該文件)
(3)內容如下:
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><!-- 定義日志輸出目標 --><targets><!-- 控制臺輸出 --><target name="console" xsi:type="Console" layout="${longdate} ${level} ${message} ${exception}" /><!-- 文件輸出。fileName若為相對位置,則產生的logs文件夾會放在專案的bin\Debug\net8.0中,也可設置絕對位置:D:\TestLogs\${shortdate}.log --><target name="logfile" xsi:type="File" fileName="logs/${shortdate}.log"layout="${longdate} ${level} ${message} ${exception}" /><!-- 可選:可以定義更多的目標,如數據庫、事件日志、郵件等 --></targets><!-- 定義日志規則 --><rules><!--常見的日志級別有:Trace < Debug < Info < Warn < Error < Fatal --><!-- 控制臺輸出規則:記錄所有級別的日志 --><logger name="*" minlevel="Info" writeTo="console" /><!-- 文件輸出規則:記錄所有級別的日志 --><logger name="*" minlevel="Trace" writeTo="logfile" /><!-- 可選:可以為不同的 logger 定義不同的規則 --></rules>
</nlog>
(4)設置屬性
????????右擊nlog.config文件,選擇“屬性”。將“復制到輸出目錄”設定為“有更新時才復制”。
3. Programs配置日志信息
using NLog.Web;
var builder = WebApplication.CreateBuilder(args);
// 配置 NLog
builder.Logging.ClearProviders(); // 清除默認的日志提供程序
// builder.Logging.AddConsole(); // 添加控制臺日志(暫無用)
// builder.Logging.AddDebug(); // 添加調試日志(暫無用)
// builder.Logging.AddEventSourceLogger(); // 添加事件源日志(暫無用)
builder.Host.UseNLog(); // 使用 NLog 作為日志提供程序
4. 設置 appsettings.json 的 LogLevel
注意:
??????? 若要使用的是appsettings.Development.json的內容,需要先判定launchSettings.json中設定的ASPNETCORE_ENVIRONMENT是否為Development(若值是Production生產環境,則appsettings.Development.json不起作用,而是appsettings.Production.json起作用,若無appsettings.Production.json,則是appsettings.json起作用)
內容如下:
{"Logging": {"LogLevel": {"Default": "Warning", // 針對所有日志,設置記錄等級// "Microsoft.AspNetCore": "Warning" // 針對Microsoft的日志}},"ConnectionStrings": {"MusicConn": "Host=10.XXX.X.XX;Database=數據庫DB;User Id=用戶名;Password=密碼;"}
}
5. 日志設定文件和日志級別的優先級
(1)常見的日志級別優先級
??????? 針對nlog.config文件:Trace < Debug < Info < Warn < Error < Fatal
??????? 針對appsettings.json文件:Trace < Debug < Information < Warning < Error < Critical
(2)日志設定文件優先級
??????? nlog.config < appsettings.json
三、方便調試查看日志
VS菜單的“工具” > 選項 > 幀錯調試 > 輸出視窗 > 將“一般輸出設定的內容”進行修改(只打開所有調試輸出和異常消息,其他都關閉)。
| 改成 | |
????