当前位置: 首页 > news >正文

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

改成

    

相关文章:

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 &#xff08;1&#xff09;常见的日志级别优先级 &#xff08;2&…...

Flask是什么?深入解析 Flask 的设计与应用实践

文章目录 一、引言&#xff1a;从微框架到生态系统二、Flask 的核心设计理念三、Flask 的关键组件解析3.1 路由系统3.2 请求与响应对象3.3 模板引擎 Jinja23.4 扩展系统 四、Flask 的并发与性能优化4.1 默认的单线程模型4.2 提升并发性能的方法4.3 性能优化技巧 五、在企业级场…...

malloc函数和calloc函数的区别是什么?

malloc函数和calloc函数在动态内存管理中都起着分配内存空间的作用&#xff0c;但它们存在以下区别&#xff1a; 参数方面 - malloc函数&#xff1a;它只有一个参数&#xff0c;该参数表示要分配的字节数。例如&#xff0c; int *ptr (int *)malloc(10 * sizeof(int)); &#…...

Ansys Maxwell:3PH 变压器电感计算

各位变形金刚粉丝们&#xff0c;大家好&#xff1a; 在本博客中&#xff0c;我讨论了如何使用 Ansys Maxwell 计算三相变压器中的自感、互感和漏感。有多种方法和表达式可用于计算这些电感。 基本电感定义 电感的单位是亨利&#xff08;H&#xff09;&#xff0c;其基本单位…...

【Go】Go文件操作详解

1. 前言 相信如果看过之前文章的朋友们一定知道我想讲什么了&#xff1f;灵魂三问&#xff1a;文件是什么&#xff1f;为什么需要文件&#xff1f;文件怎么操作&#xff1f;前面章节我们已经能够编写各种各样的功能代码了&#xff0c;但是一个很现实的问题就是我们没有任何 持…...

[react+ts] useRef获取自定义组件dom或方法声明

想用useRef获取自定义组件? 如果获取dom,直接写 const sonRef useRef<HTMLDivElement>(null); 然后子组件用forwardRef包一层,注意是HTMLDivElement,别写错, 写HTMLElement不行 const Son forwardRef<HTMLDivElement, IProps>((props, ref) > {}) 切记这…...

AI 将在今年获得“永久记忆”,2028美国会耗尽能源储备

AI的“永久记忆”时代即将来临 谷歌前CEO施密特揭示了AI技术的前景&#xff0c;他相信即将在2025年迎来一场伟大的变化。AI将实现“永久记忆”&#xff0c;改变我们与科技的互动过程。施密特将现有的AI上下文窗口比作人类的短期记忆&#xff0c;难以持久保存信息。他的设想是…...

【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】

视频链接: 基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil 从头编写一个视觉语言模型:PloyGamma,是谷歌的一个模型 1:原始图像 2:视觉编码器(本文是viT),通过对比学习进行训练。这个对比学习最开始是CLIP,后来被谷歌改成了SigLIP 3:线性投影层 4:如何将图…...

解决 C++ 中头文件相互引用和解耦问题

在 C 中&#xff0c;当多个 .h 文件相互引用时&#xff0c;可能会导致 循环依赖 或 头文件冗余 问题&#xff0c;进而引发编译时间延迟、代码复杂度增加等问题。为了有效地解耦和组织代码&#xff0c;可以采用以下几种策略和思想&#xff1a; 1. 前向声明&#xff08;Forward …...

河马剧场(短剧)APP的邀请码怎么填写

上篇给大家说到河马剧场免费看短剧还能领5.2元3天vip会员&#xff0c;本文就说一下河马剧场河马短剧APP的邀请码怎么填写。 河马短剧APP填写邀请码分三步&#xff1a; 1、安装登陆河马短剧APP 2、点击底部导航栏中间的“福利” 3、往下划会看到“填写邀请码领3天vip” 4、…...

01:C语言的本质

C语言的本质 1、ARM架构与汇编2、局部变量初始化与空间分配2.1、局部变量的初始化2.1、局部变量数组初始化 3、全局变量/静态变量初始化化与空间分配4、堆空间 1、ARM架构与汇编 ARM简要架构如下&#xff1a;CPU&#xff0c;ARM(能读能写)&#xff0c;Flash&#xff08;能读&a…...

第1章:数据库基础

第1章&#xff1a;数据库基础 1.1 数据库概述 1.1.1 什么是数据库 数据库的定义数据库的发展历程数据库的重要性 1.1.2 关系型数据库简介 关系型数据库模型常见的关系型数据库关系型数据库的特点 1.1.3 MySQL在企业中的应用 Web应用电商平台金融系统大数据存储 1.2 数据…...

C++教程 | string类的定义和初始化方法

在C中&#xff0c;string是标准库中用于处理字符串的类&#xff0c;定义在 头文件中&#xff0c;它提供了方便、灵活的字符串操作功能。以下是一些常见的定义和初始化string对象的方法&#xff1a; 1. 默认初始化 可以直接定义一个空的string对象&#xff0c;语法如下&#x…...

React中的合成事件

合成事件与原生事件 区别&#xff1a; 1. 命名不一样&#xff0c;原生用纯小写方式&#xff0c;react用小驼峰的方式 原生&#xff1a;onclick React的&#xff1a;onClick 2. 事件处理函数的写法不一样 原生的是传入一个字符串&#xff0c;react写法传入一个回调函数 3.…...

[SMARTFORMS] 创建FORM

输入事务码SMARTFORMS进入表单开发界面&#xff0c;选中表单&#xff0c;自定义表单名称ZFS_DEMO_2025 点击"创建"按钮&#xff0c;跳转至"SAP表格设计器"页面 在"表格属性"填写表单描述、指定页格式和样式 在"表格接口"可以填写SMART…...

成都和力九垠科技有限公司九垠赢系统Common存在任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

基于Python的考研学习系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

『SQLite』几种向表中插入数据的方法

向表中插入数据 INSERT INTO 语句用来给数据库中的某个表中新增数据行。 案例 直接根据基本语法插入数据插入时不用全部指定列名方式根据查询结果将数据插入另一张表中 注意 上述内容详讲见文章&#xff1a;SQLite的INSERT操作&#xff08;内含案例&#xff09;...

什么是Kafka的重平衡机制?

Kafka 的重平衛机制是指在消费者组中新增或删除消费者时&#xff0c;Kafka 集群会重新分配主题分区给各个消费者&#xff0c;以保证每个消费者消费的分区数量尽可能均衡。 重平衡机制的目的是实现消费者的负载均衡和高可用性&#xff0c;以确保每个消费者都能够按照预期的方式…...

pdf预览 报:Failed to load module script

pdf 预览报&#xff1a; Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec. 报错原因&#xff1a…...

【奇点2026白皮书核心章节】:为什么83.6%的AI合并失败源于AST抽象层级错配?附可审计的合并决策树V2.1模板

第一章&#xff1a;AST抽象层级错配&#xff1a;AI代码合并失败的根因解构 2026奇点智能技术大会(https://ml-summit.org) AST&#xff08;Abstract Syntax Tree&#xff09;是现代AI代码工具理解、生成与重构程序的核心中间表示。然而&#xff0c;当多个AI代理协同执行代码合…...

3D感知(15)Focal Sparse Conv深度解析:如何让稀疏卷积学会“聚焦”关键区域

1. 为什么稀疏卷积需要"聚焦"能力&#xff1f; 在自动驾驶的3D物体检测任务中&#xff0c;激光雷达点云数据有个很明显的特征&#xff1a;极度稀疏且分布不均。想象一下&#xff0c;你站在十字路口用激光雷达扫描周围环境——近处的车辆、行人会留下密集的点云&#…...

告别UI管理混乱:DoozyUI的UICanvas与UIView如何帮你构建可维护的Unity项目架构

告别UI管理混乱&#xff1a;DoozyUI的UICanvas与UIView如何帮你构建可维护的Unity项目架构 在开发中大型Unity项目时&#xff0c;UI系统的复杂度往往随着功能迭代呈指数级增长。当项目包含多个场景、数十个界面和数百个交互元素时&#xff0c;开发者常会遇到以下典型问题&#…...

C++20中views的学习与实战练习

我们先来看实例&#xff1a;有 n 座山排成一列&#xff0c;每座山都有一个高度。给你一个整数数组 height &#xff0c;其中 height[i] 表示第 i 座山的高度&#xff0c;再给你一个整数 threshold 。 对于下标不为 0 的一座山&#xff0c;如果它左侧相邻的山的高度 严格大于 th…...

别再只会用getOpenFileName了!QT文件对话框8个静态函数的保姆级使用指南(含DontResolveSymlinks等参数详解)

QT文件对话框全解析&#xff1a;从静态函数选择到参数调优实战 在QT开发中&#xff0c;文件对话框是用户与本地文件系统交互的重要桥梁。许多开发者习惯性地使用getOpenFileName应对所有场景&#xff0c;却忽略了QT提供的8个静态函数各有其独特的设计意图和使用场景。本文将带…...

从振铃效应看巴特沃斯低通滤波器(BLPF)的阶数选择与MATLAB实战

1. 振铃效应与图像滤波的恩怨情仇 第一次在MATLAB里看到振铃效应时&#xff0c;我盯着屏幕上的"鬼影"愣了半天——明明只是做个简单的图像去噪&#xff0c;怎么边缘突然冒出一圈圈涟漪般的伪影&#xff1f;这种被称为"振铃效应"的现象&#xff0c;就像敲钟…...

布尔莎七参数坐标转换实战:从理论到C++/Matlab实现

1. 布尔莎七参数模型&#xff1a;测绘工程师的坐标转换利器 第一次接触布尔莎七参数转换是在处理无人机航测数据时。当时项目需要将WGS-84坐标系的点云数据转换到地方坐标系&#xff0c;试了好几种方法都不理想&#xff0c;直到同事推荐了这个"七参数魔法"。简单来说…...

.NET金融数据集成架构实践:基于Yahoo Finance API的企业级解决方案深度解析

.NET金融数据集成架构实践&#xff1a;基于Yahoo Finance API的企业级解决方案深度解析 【免费下载链接】YahooFinanceApi A handy Yahoo! Finance api wrapper, based on .NET Standard 2.0 项目地址: https://gitcode.com/gh_mirrors/ya/YahooFinanceApi 在金融科技快…...

gym-pybullet-drones终极指南:用Python构建专业的无人机强化学习环境

gym-pybullet-drones终极指南&#xff1a;用Python构建专业的无人机强化学习环境 【免费下载链接】gym-pybullet-drones PyBullet Gymnasium environments for single and multi-agent reinforcement learning of quadcopter control 项目地址: https://gitcode.com/gh_mirro…...

AI编程革命:Codex自动化脚本实战指南

技术文章大纲&#xff1a;告别重复造轮子——Codex写脚本的高效实践核心主题通过OpenAI Codex等AI编程工具自动化生成脚本&#xff0c;减少重复开发工作&#xff0c;提升效率。理解Codex的能力与限制Codex是基于GPT-3的代码生成模型&#xff0c;擅长根据自然语言描述生成Python…...