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>();
		// 记录logger
		logger.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菜单的“工具” > 选项 > 帧错调试 > 输出视窗 > 将“一般输出设定的内容”进行修改(只打开所有调试输出和异常消息,其他都关闭)。

改成

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948467.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【游戏设计原理】47 - 超游戏思维

对于这条原理&#xff0c;我首先想到的是开放世界&#xff0c;或者探索性游戏&#xff0c;这是最能包容各类玩家的游戏类型。这类游戏定义了基本规则&#xff0c;玩家的可操作性很强。就像上图里的沙池一样&#xff0c;里面有滑梯&#xff0c;是规则性比较明确的&#xff0c;而…

24年无人机行业资讯 | 12.23-12.29

24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司&#xff0c;助力低空经济规范发展2、商务部支持无人机民用国际贸易&#xff0c;强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下&#xff0c;跨境电商行业正以前所未有的态势重塑国际贸易格局&#xff0c;成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》&#xff0c;…

SMMU软件指南之系统架构考虑

安全之安全(security)博客目录导读 目录 5.1 I/O 一致性 5.2 客户端设备 5.2.1 地址大小 5.2.2 缓存 5.3 PCIe 注意事项 5.3.1 点对点通信 5.3.2 No_snoop 5.3.3 ATS 5.4 StreamID 分配 5.5 MSI 本博客介绍与 SMMU 相关的一些系统架构注意事项。 5.1 I/O 一致性 如…

mysql自定义安装

1、下载安装包 我是在windows上安装&#xff0c;所以选择“Mysql Installer for Windows” 2、安装mysql 双击“mysql-installer-community-8.0.40.0.msi”&#xff0c;开始启动安装 这里选择安装项&#xff0c;这里只选择了两项。workbench是图形化管理工具&#xff0c;比较吃…

Python、R用深度学习神经网络组合预测优化能源消费总量时间序列预测及ARIMA、xgboost对比...

全文链接&#xff1a;https://tecdat.cn/?p38726 分析师&#xff1a;Qingxia Wang 在能源领域&#xff0c;精准预测能源消费总量对制定合理能源战略至关重要。当前&#xff0c;能源消费预测分析主要运用单一模型&#xff08;如灰色预测法、时间序列分析法等&#xff09;和组合…

AI周报(12.29-1.4)

AI应用-微软BiomedParse一键解析九大成像模式 BiomedParse是一款由微软和华盛顿大学等机构联合开发的生物医学图像解析模型&#xff0c;能够一键解析九大生物医学成像模式。该模型通过文本驱动的方式&#xff0c;整合了包括MRI、CT、病理学等多种成像模式&#xff0c;实现了高…

电商Google广告:2025年提升转化率的5种策略

展望 2025 年&#xff0c;Google 广告领域将迎来一系列显著变化&#xff0c;这些趋势对于提升广告转化率至关重要&#xff0c;值得我们提前关注与布局。 智能化程度持续加深&#xff0c;用户搜索习惯愈发精细&#xff0c;广告格式推陈出新&#xff0c;视频广告势头正猛...那么…

一文讲清楚HTTP常见的请求头和应用

文章目录 一文讲清楚HTTP常见的请求头和应用1. 啥是个HTTP请求头2. 常见的请求头&#xff0c;作用和示例3.协商缓存4.会话状态 一文讲清楚HTTP常见的请求头和应用 1. 啥是个HTTP请求头 一句话&#xff0c;说白了就是限定HTTP传输的一些规则参数&#xff0c;比如Accept&#xf…

Arduino 小白的 DIY 空气质量检测仪(5)- OLED显示模块、按钮模块

最终章 这一章把剩下的OLED显示模块、按钮模块分享一下&#xff0c;当前这个离线无存储的版本&#xff0c;基本告一段落。 如果后续能进化成&#x1f236;存储、联网版本&#xff0c;就再开一个小系列分享一下。 逐个分析 display.h #include <Arduino.h> #include &l…

WandB使用笔记

最近看代码&#xff0c;发现代码中有wandb有关的内容&#xff0c;搜索了一下发现是一个模型训练工具&#xff0c;然后学习了一下&#xff0c;这里记录一下使用过程&#xff0c;方便以后查阅。 WandB使用笔记 登录WandB 并 创建团队安装 WandB 并 登录模型训练过程跟踪模型版本管…

一文理解ssh,ssl协议以及应用

在使用基于密钥的认证方式的时候&#xff0c;私钥的位置一定要符合远程服务器规定的位置&#xff0c;否则找不到私钥的位置会导致建立ssh连接失败 SSH 全称是 “Secure Shell”&#xff0c;即安全外壳协议。 它是一种网络协议&#xff0c;用于在不安全的网络中安全地进行远程登…

Elasticsearch 创建索引 Mapping映射属性 索引库操作 增删改查

Mapping Type映射属性 mapping是对索引库中文档的约束&#xff0c;有以下类型。 text&#xff1a;用于分析和全文搜索&#xff0c;通常适用于长文本字段。keyword&#xff1a;用于精确匹配&#xff0c;不会进行分析&#xff0c;适用于标签、ID 等精确匹配场景。integer、long…

【Ubuntu】 Ubuntu22.04搭建NFS服务

安装NFS服务端 sudo apt install nfs-kernel-server 安装NFS客户端 sudo apt install nfs-common 配置/etc/exports sudo vim /etc/exports 第一个字段&#xff1a;/home/lm/code/nfswork共享的目录 第二个字段&#xff1a;指定哪些用户可以访问 ​ * 表示所有用户都可以访…

【谷歌开发者月刊】十二月精彩资讯回顾,探索科技新可能

我们在今年的尾声中回顾本月精彩&#xff0c;开发者们借助创新技术为用户打造温暖的应用体验&#xff0c;展现技术与实用的结合。欢迎您查阅本期月刊&#xff0c;掌握最新动态。 本月看点 精彩看点多多&#xff0c;请上下滑动阅览 01DevFest 北京站和上海站圆满举办&#xff0c…

浙江中医药大学携手云轴科技ZStack荣获“鼎信杯”金鼎实践奖

近日&#xff0c;2024“鼎信杯”信息技术发展论坛&#xff08;以下简称“论坛”&#xff09;在北京隆重召开。本次论坛汇聚多位领导和专家&#xff0c;以及业内骨干企业、研究机构、用户单位、行业组织代表等500余人&#xff0c;共同探讨信息技术应用创新产业趋势&#xff0c;分…

嵌入式linux系统中CMake的基本用法

第一:CMake的基本使用 在上篇文章中,我们聊了聊 Makefile。虽然它是 C/C++ 项目编译的“老司机”,但写起来真的是让人头大。尤其是当项目文件一多,手写依赖就像在搬砖,费时又费力。 那么问题来了,难道我们就没有更优雅的工具了吗?答案是:有! 这时候,CMake 就像一个…

vulnhub Earth靶机

搭建靶机直接拖进来就行 1.扫描靶机IP arp-scan -l 2.信息收集 nmap -sS -A -T4 192.168.47.132 得到两个DNS; 在443端口处会让我们加https dirb https://earth.local/ dirb https://terratest.earth.local/ #页面下有三行数值 37090b59030f11060b0a1b4e0000000000004312170a…

【AI日记】25.01.04 kaggle 比赛 3-3 | 王慧玲与基层女性

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales时间&#xff1a;6 小时 读书 书名&#xff1a;基层女性时间&#xff1a;3 小时原因&#xff1a;虽然我之前就知道这个作者&#xff0c;因为我…

《learn_the_architecture_-_aarch64_exception_model》学习笔记

1.当发生异常时&#xff0c;异常级别可以增加或保持不变&#xff0c;永远无法通过异常来转移到较低的权限级别。从异常返回时&#xff0c;异常级别可能会降低或保持不变&#xff0c;永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理&#xff0c;异常必须在比…