Backend - C# 的日志 NLog日志

目錄

一、注入依賴和使用 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菜單的“工具” > 選項 > 幀錯調試 > 輸出視窗 > 將“一般輸出設定的內容”進行修改(只打開所有調試輸出和異常消息,其他都關閉)。

改成

????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65060.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ESP32自動下載電路分享

下面是一個ESP32系列或者ESP8266等電路的一個自動下載電路 在ESP32等模塊需要燒寫程序的時候&#xff0c;需要通過將EN引腳更改為低電平并將IO0引腳設置為低電平來切換到燒寫模式。 有時候也會采用先將IO接到一個按鍵上&#xff0c;按住按鍵拉低IO0的同時重新上電的方式進入燒寫…

QML自定義數值編輯框SpinBox樣式

代碼展示 import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.1Window {visible: truewidth: 640height: 480title: qsTr("Hello World")SpinBox {id: controlvalue: 50editable: truecontentItem: TextInput {z: 2text: control.textFromVal…

魅族手機調用tts失敗解決

安裝了閱讀、MultiTTS之后&#xff0c;發現閱讀的時候一直tts初始化失敗&#xff0c;換了多個tts軟件也不行。。。 解決方法&#xff1a;tts軟件設置后臺運行權限 打開“手機管家”權限管理后臺管理找到自己安裝的tts軟件&#xff08;比如我是MultiTTS&#xff09;&#xff0c…

1-markdown轉網頁樣式頁面 --[制作網頁模板] 【測試代碼下載】

markdown轉網頁 將Markdown轉換為帶有樣式的網頁頁面通常涉及以下幾個步驟&#xff1a;首先&#xff0c;需要使用Markdown解析器將Markdown文本轉換為HTML&#xff1b;其次&#xff0c;應用CSS樣式來美化HTML內容。此外&#xff0c;還可以加入JavaScript以增加交互性。下面我將…

Eplan 項目結構(高層代號、安裝地點、位置代號)

Eplan中的項目結構分為3個層次&#xff1a; &#xff08;1&#xff09;功能面結構。指明這個系統的功能&#xff0c;有什么用途。在EPlan中&#xff0c;指的就是"高層代號&#xff08;&#xff09;"。 一般指的是線體。 &#xff08;2&#xff09;位置面結構。指明該…

《Armv8-A virtualization》學習筆記

1.MAIR 的全稱是 Memory Attribute Indirection Register。它是ARM架構中的一種寄存器&#xff0c;用于定義內存的屬性&#xff0c;并提供一種間接訪問內存屬性的機制。MAIR寄存器包含多個字段&#xff0c;這些字段指示不同類型內存的屬性&#xff0c;例如是否可以緩存、是否為…

NLP 復習大綱

CH3 激活函數意義 增強網絡表達能力&#xff0c;引入非線性因素 連續可導的非線性函數 盡可能簡單 導數的值域要在合適的范圍內 為什么會發生梯度消失 誤差傳播的迭代公式為&#xff1a; 其中需要用到激活函數的導數&#xff0c;而激活函數的導數值小于1時&#xff0c;誤差經過…

如何使用OBS Studio錄制屏幕?

可以進入官網或github進行下載&#xff1a; https://obsproject.com/download 安裝包解壓后進入bin 進入64-bit 選擇obs 64 進入OBS Studio后在來源內右鍵&#xff0c;選擇添加 選擇添加顯示器采集即可錄取整個屏幕&#xff0c;窗口采集可選擇窗口進行錄制 選擇對應顯示器即配置…

深入理解連接池:從數據庫到HTTP的優化之道

在現代應用開發中&#xff0c;高效的資源管理是關鍵&#xff0c;其中連接池&#xff08;Connection Pool&#xff09;技術起到了至關重要的作用。本文將帶你深入了解連接池的概念及其在數據庫和HTTP通信中的應用&#xff0c;結合 JDBC 與 Druid 的關系&#xff0c;以及 HttpURL…

XIAO Esp32 S3 網絡攝像頭——3音視頻監控

1、介紹 之前分別介紹了音頻和視頻的接收,本文是整合了前2篇文章,實現了音視頻的同時獲取。 效果: 用xiao esp35 s3自制一個網絡攝像頭 2、適用場景廣泛 家庭安防 無論是門前監控,還是室內安全,自制攝像頭可以讓你輕松把握每個角落,實時查看視頻流,防止任何潛在風險。…

9.類的定義與使用

類的定義構造函數(__init__)實例變量類變量方法(實例方法)類方法(classmethod)靜態方法(staticmethod)屬性裝飾器(property)私有屬性與方法繼承多態方法重寫super()函數類的文檔字符串類的屬性和方法訪問控制 1.類的定義: 如int,list,tuple等等都是類,還可以通過class方法自己…

【文獻精讀筆記】Explainability for Large Language Models: A Survey (大語言模型的可解釋性綜述)(三)

****非斜體正文為原文獻內容&#xff08;也包含筆者的補充&#xff09;&#xff0c;灰色塊中是對文章細節的進一步詳細解釋&#xff01; 3.2 全局解釋&#xff08;Global Explanation&#xff09; 與旨在解釋模型個體預測的局部解釋不同&#xff0c;全局解釋提供了對語言模型…

使用消息隊列可能遇到的問題及其解決辦法

在使用消息隊列時&#xff0c;可能會遇到以下三個問題&#xff1a; 一.消息丟失 產生的原因&#xff1a;消息發送出去&#xff0c;由于網絡問題或系統異常沒有抵達服務器&#xff1b; 解決辦法&#xff1a; 做好容錯方法&#xff08;try-catch&#xff09;&#xff0c;發送…

學習隨筆:word2vec在win11 vs2022下編譯、測試運行

word2vec 官網word2vec的本質是在自然語言詞條數據集與計算機浮點數據集之間建立雙射關系。word2vec建立的數據集最厲害的一點是&#xff0c;將自然語言詞條數據集內部的推理過程&#xff0c;映射到了計算機浮點數據集內部的數值運算。我個人感覺理解這個數據映射方式是理解AI大…

vue cli更新遇到的問題(vue -V查詢版本號不變的問題)

1.鏡像地址選擇 npm會去默認的registry遠程倉庫中下載指定內容 該過程可能十分緩慢 因此我們可以切換默認倉庫為鏡像地址 npm config set registry https://registry.npmmirror.com 通過該指令可以從最新的鏡像地址下載指定內容(鏡像地址可能會有變 有變請重新查詢) 2.下載 …

qt中如何判斷字符串是否為數字,整數,浮點數?

在 Qt 中&#xff0c;可以使用多種方法來判斷字符串是否為數字、整數或浮點數。Qt 提供了一些方便的字符串和數值處理函數&#xff0c;可以幫助你實現這些判斷。以下是幾種常見的方法&#xff1a; 1. 使用 QRegularExpression Qt 提供了 QRegularExpression 類&#xff0c;可…

搭建nginx文件服務器

方法一&#xff1a;通過docker方式搭建 1、創建一個nginx配置文件/etc/nginx/nginx.conf user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_typ…

練習題:37

目錄 Python題目 題目 題目分析 套接字概念剖析 通信原理分析 服務器 - 客戶端連接建立過程&#xff1a; 基于套接字通信的底層機制&#xff1a; 代碼實現 基于 TCP 的簡單服務器 - 客戶端通信示例 服務器端代碼&#xff08;tcp_server.py&#xff09; 客戶端代碼&a…

2017年IMO幾何預選題第7題

凸四邊形 A B C D ABCD ABCD 有內切圓 I I I, △ D A B \triangle DAB △DAB, △ A B C \triangle ABC △ABC, △ B C D \triangle BCD △BCD, △ C D A \triangle CDA △CDA 的內心分別為 I a I_a Ia?, I b I_b Ib?, I c I_c Ic?, I d I_d Id?. △ A I b I d \…

RabbitMQ案例

1. 導入依賴 <!--AMQP依賴&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 發送消息 注入RabbitTemplate Autowired RabbitT…