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

改成

    

http://www.lryc.cn/news/515924.html

相关文章:

  • Flask是什么?深入解析 Flask 的设计与应用实践
  • malloc函数和calloc函数的区别是什么?
  • Ansys Maxwell:3PH 变压器电感计算
  • 【Go】Go文件操作详解
  • [react+ts] useRef获取自定义组件dom或方法声明
  • AI 将在今年获得“永久记忆”,2028美国会耗尽能源储备
  • 【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】
  • 解决 C++ 中头文件相互引用和解耦问题
  • 河马剧场(短剧)APP的邀请码怎么填写
  • 01:C语言的本质
  • 第1章:数据库基础
  • C++教程 | string类的定义和初始化方法
  • React中的合成事件
  • [SMARTFORMS] 创建FORM
  • 成都和力九垠科技有限公司九垠赢系统Common存在任意文件上传漏洞
  • 基于Python的考研学习系统
  • 『SQLite』几种向表中插入数据的方法
  • 什么是Kafka的重平衡机制?
  • pdf预览 报:Failed to load module script
  • AI 角色扮演法的深度剖析与实践
  • weblogic问题
  • Qt仿音乐播放器:客户端唯一化
  • ceph文件系统
  • 【数据结构-堆】力扣2530. 执行 K 次操作后的最大分数
  • Java jdk8新特性:Stream 流
  • 房产销售系统(源码+数据库+文档)
  • Vue 项目自动化部署:Coding + Jenkins + Nginx 实践分享
  • 从零开始开发纯血鸿蒙应用之实现起始页
  • CG顶会论文阅读|《科技论文写作》硕士课程报告
  • 【Python运维】使用Python与Docker进行高效的容器化应用管理