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

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

改成

    


http://www.kler.cn/a/466919.html

相关文章:

  • clickhouse query_log 常用查询语句
  • 01、Docker学习,第一天:简单入门与安装
  • OpenCV的TickMeter计时类
  • 【C++】矩阵转置问题详解与优化
  • Outlook2024版如何回到经典Outlook
  • 让私域用户付费的三个关键要素
  • 机器学习经典算法——KNN算法
  • 记一个小程序的诞生与死亡
  • Rust 泛型、特征与生命周期详解
  • [CTF/网络安全] 攻防世界 supersqli 解题详析
  • 新手学习yolov8目标检测小记2--对比实验中经典模型库MMDetection使用方法(使用自己的数据集训练,并转换为yolo格式评价指标)
  • Linux部署web项目【保姆级别详解,Ubuntu,mysql8.0,tomcat9,jdk8 附有图文】
  • Next.js 多语言 (1) | 中间件(Middleware)的设置与应用
  • android 开发中的 SPI模式
  • Kotlin 协程与异步编程
  • 《前端web开发-CSS3基础-1》
  • HTML——67. 复选框
  • Linux内核的缺页异常的简介
  • svn 相关应用与管理
  • 生物信息学 笔记
  • OWASP ZAP之API 请求基础知识
  • 克服HTTP无状态难题:专业建议与指导
  • 超越LLaMA:语言模型三重奏Alpaca、Vicuna与WizardLM
  • 用C++使用带头单向非循环链表,实现一个哈西桶
  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(25):椭圆曲线密码学(续)
  • ScheduledExecutorService详解