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

如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?

image

前言

昨天分享了在 .NET Core Console 项目中应用 NLog 写日志的详细例子,有几位小伙伴私信说 ASP.NET Core Web Api 项目中无法使用,其实在 ASP.NET Core Web Api 项目中应用 NLog 写日志,跟 .NET Core Console 项目是有些不一样的,今天我特地写了一个在 ASP.NET Core Web Api 项目中应用 NLog 写日志的例子,我们来看看如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?

不废话,直接上 Step By Step 例子。

Step By Step 步骤

  1. 创建一个 ASP.NET Core Web Api 项目

  2. 下载 Nuget 包

    NLog.Web.AspNetCore

  3. 手动添加 nlog.config 文件,并设置 复制到输出目录-如果较新则复制

    • 可直接复制粘贴 《分享一个 .NET Core Console 项目中应用 NLog 写日志的详细例子》 一文中的 附录:NLog.config 内容
  4. 在 Program.cs 注入 NLog 服务(留意注释

    using NLog.Web;var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();
    // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();// 注入 NLog
    builder.Logging.AddNLog("nlog.config");var app = builder.Build();// Configure the HTTP request pipeline.
    if (app.Environment.IsDevelopment())
    {app.UseSwagger();app.UseSwaggerUI();
    }app.UseAuthorization();app.MapControllers();app.Run();
    
  5. 在 Controller 中使用

    using Microsoft.AspNetCore.Http.Features;
    using Microsoft.AspNetCore.Mvc;
    using System.Text;namespace NLogSample.Controllers
    {[ApiController][Route("iclock")]public class TestController : ControllerBase{private readonly ILogger<XFaceController> _logger;// 在构造方法中注入 ILogger 实例public TestController(ILogger<XFaceController> logger){_logger = logger;}[HttpGet][Route("cdata")]public IActionResult Init(){var s = "OK";// 写日志_logger.LogInformation($"Return: {s}");return Ok(s);}}
    }
    

附录:NLog.config 内容

参见 《分享一个 .NET Core Console 项目中应用 NLog 写日志的详细例子》 一文中的 附录:NLog.config 内容

总结

NLog 在 .NET Core Console 项目和 ASP.NET Core Web Api 项目中所使用的包并不相同,注册到容器的方式也不一样,这主要是由于它们的应用架构和生命周期不同所导致的。

.NET Core Console 项目,没有像 ASP.NET Core Web Api 那样内置的依赖注入容器,因此,在 Console 项目中,需要手动配置 NLog。而 ASP.NET Core Web Api 项目,使用内置的依赖注入容器来管理服务的生命周期和依赖关系,在这种情况下,可以将 NLog 配置为服务之一,然后将其注入到容器中。

这些差异,在注册其他第三方包时也会有,大家可仔细辨别体会。

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。

都看到这了,求个点赞、关注、在看三连呗,感谢支持。

相关文章:

如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?

前言 昨天分享了在 .NET Core Console 项目中应用 NLog 写日志的详细例子&#xff0c;有几位小伙伴私信说 ASP.NET Core Web Api 项目中无法使用&#xff0c;其实在 ASP.NET Core Web Api 项目中应用 NLog 写日志&#xff0c;跟 .NET Core Console 项目是有些不一样的&#xf…...

selenium execute_script常用方法汇总

driver.execute_script() 是 Selenium WebDriver 中非常强大且灵活的功能&#xff0c;可以用来执行任意的 JavaScript 代码在浏览器上下文中。以下是一些常用的 execute_script() 方法的例子和用法&#xff1a; 修改元素的属性和值 python# 修改输入框的值 driver.execute_sc…...

如何选择最佳的APP封装平台-小猪APP分发为您解忧

在开发移动应用程序的过程中&#xff0c;选择一个可靠的APP封装平台显得尤为重要。无论你是初创企业还是大型企业&#xff0c;找到一个合适的平台可以大大简化你的开发流程。如何选择最佳的APP封装平台呢&#xff1f;今天我们就来聊聊这个话题&#xff0c;并重点介绍一下小猪AP…...

Linux基础 (十八):Libevent 库的安装与使用

目录 一、Libevent 概述 1.0 Libevent的安装 1.0.1 使用源码方式 1.0.2 终端命令行安装 1.1 主要特性 1.2 主要组件 1.3 Libevent 使用模型 1.4 原理 1.5 使用的基本步骤 1.5.1 初始化事件基础设施 1.5.2. 创建和绑定服务器套接字 1.5.3. 设置监听事件 1.5.4. 定义…...

冒泡排序的详细介绍 , 以及c , python , Java的实现方法

冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…...

使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署

使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署 概述 llama.cpp的主要目标是能够在各种硬件上实现LLM推理&#xff0c;只需最少的设置&#xff0c;并提供最先进的性能。提供1.5位、2位、3位、4位、5位、6位和8位整数量化&#xff0c;以加快推理速度并减少内存使用。…...

给你一个扫码支付的二维码,如何写测试用例?

前言 面试的时候&#xff0c;经常会临场出题&#xff1a;给你一个xxx, 如何测试, 或者说如何写测试用例&#xff1f;xxx可以是圆珠笔&#xff0c;水杯&#xff0c;电梯等生活中常见的场景。 那么给你一个支付的二维码&#xff0c;如何写测试用例呢&#xff1f; 二维码扫码支…...

计算机专业在未来的发展与抉择

目录 前言 计算机专业的发展历史 计算机专业的前景 计算机专业的挑战 如何判断自己是否适合计算机专业 计算机行业的未来发展态势 作为过来人和从业者 前言 随着2024年高考落幕&#xff0c;数百万高三学生又将面临人生中的重要抉择&#xff1a;选择大学专业。在这个关键…...

【Linux】基础IO——文件描述符,重定向

话接上篇&#xff1a; 1.文件描述符fd 磁盘文件 VS 内存文件&#xff1f; 当文件存储在磁盘当中时&#xff0c;我们将其称之为磁盘文件&#xff0c;而当磁盘文件被加载到内存当中后&#xff0c;我们将加载到内存当中的文件称之为内存文件。磁盘文件和内存文件之间的关系就像程…...

1.0 Android中Activity的基础知识

一&#xff1a;Activity的定义 Activity是一个应用组件&#xff0c;它提供了一个用户界面&#xff0c;允许用户执行一个单一的、明确的操作&#xff0c;用户看的见的操作都是在activity中执行的。Activity的实现需要在manifest中进行定义&#xff0c;不让会造成程序报错。 1.…...

线代知识点总结

目录 一.初等行/列变换 1.计算行列式时&#xff0c;行列变换都可 2.求矩阵的秩时&#xff0c;行列变换都可 3.解线性方程组时&#xff0c;仅能使用初等行变换 4.判定解的情况&#xff0c;单纯求r(A),r(A,b)的过程行列变换都可 5.求向量组极大无关组、线性表出关系&#x…...

案例学习-存量更新规划实施探索(武汉)

案例学习-存量更新规划实施探索&#xff08;武汉&#xff09; 武汉市在早期旧城更新实践中发现零散化的更新往往导致资源配置分散、城市建设破碎化等弊病&#xff0c;特别是由于过于强调项目自身“经济平衡”&#xff0c;在实施过程中也逐步暴露出住宅占比过大、强度偏高、公服…...

C#操作MySQL从入门到精通(17)——使用联结

前言: 我们在查询数据的过程中有时候查询的数据不是来自一个表而是来自多个表,本文使用的测试数据如下: 本文使用了两个表student_info、address_info student_info的数据如下: address_info的数据如下: 1、内联结 所谓内联结就是求交集,两个表都有的数据才是有效数…...

MyBatis 关于查询语句上配置的详细内容

1. MyBatis 关于查询语句上配置的详细内容 文章目录 1. MyBatis 关于查询语句上配置的详细内容2. 准备工作3. SQL查询结果&#xff0c;返回为POJO实体类型4. SQL查询结果&#xff0c;返回为List<POJO\> 集合类型5. SQL查询结果&#xff0c;返回为Map 集合6. SQL查询结果&…...

基于STM32和人工智能的智能家居监控系统

目录 引言环境准备智能家居监控系统基础代码实现&#xff1a;实现智能家居监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能家居管理与优化问题解决方案与优化收尾与总结 1. 引言 随着智能家居技术的快速发展&…...

这三款使用的视频、图片设计工具,提供工作效率

Videograp Videograp是一款专注于视频生成的工具&#xff0c;特别适合需要快速剪辑和编辑视频的用户。Videograp具备以下特点&#xff1a; 影音比例转换&#xff1a;Videograp支持调整视频的分辨率和比例&#xff0c;使其更适合不同的播放环境和设备。 AI快剪&#xff1a;该工…...

[Algorithm][贪心][最长递增子序列][递增的三元子序列][最长连续递增序列][买卖股票的最佳时机][买卖股票的最佳时机Ⅱ]详细讲解

目录 1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.递增的三元子序列1.题目链接2.算法原理详解3.题目链接 3.最长连续递增序列1.题目链接2.算法原理详解3.代码实现 4.买卖股票的最佳时机1.题目链接2.算法原理详解3.代码实现 5.买卖股票的最佳时机 II1.题目链接2.算法…...

手把手教你入门vue+springboot开发(三)--登录功能后端

文章目录 前言一、redis安装二、后端代码1.修改application.yml文件2.增加utils文件3.增加Result类4.修改UserController类5.修改UserMapper类6.修改UserService和UserServiceImpl类7.增加LoginInterceptor类8.增加WebConfig类9.修改pom.xml文件 前言 前两篇我们用vuespringbo…...

三款有3D效果的js图表库

1、G2简洁的渐进式可视化语法。https://g2.antv.antgroup.com/manual/extra-topics/3d-charts 2、 https://www.highcharts.com/https://www.highcharts.com/ 3、https://www.fusioncharts.com/charts/pie-doughnut-charts/donut-chart-in-3d?frameworkjavascripthttps://www…...

【SQLAlChemy】表之间的关系,外键如何使用?

表之间的关系 数据库表之间的关系分为三种&#xff1a; 一对一关系&#xff08;One-to-One&#xff09;&#xff1a;在这种关系中&#xff0c;表A的每一行都与表B的一行关联&#xff0c;反之亦然。例如&#xff0c;每个人都有一个唯一的社保号&#xff0c;每个社保号也只属于…...

Linux七大常见误解与真相解析

1. Linux 神话的起源与现状Linux 作为开源操作系统的代表&#xff0c;自1991年诞生以来就伴随着各种误解和神话。这些误解往往源于早期Linux的使用门槛较高、图形界面不够完善等历史原因。但经过30多年的发展&#xff0c;现代Linux发行版已经发生了翻天覆地的变化。在技术社区中…...

Linux I2C设备驱动避坑指南:以MPU6050为例,详解i2c_transfer与数据读取失败

Linux I2C设备驱动深度调试&#xff1a;MPU6050通信稳定性问题全解析 当你在嵌入式系统中集成MPU6050传感器时&#xff0c;是否遇到过这样的场景&#xff1a;设备树配置正确&#xff0c;驱动代码逻辑清晰&#xff0c;但传感器数据读取却间歇性失败&#xff0c;内核日志中频繁出…...

深入浅出Livepatch:从kprobe到ftrace的Linux热补丁实现原理

深入浅出Livepatch&#xff1a;从kprobe到ftrace的Linux热补丁实现原理 当你的生产环境服务器正在处理每秒数万次请求时&#xff0c;突然发现一个关键内核漏洞需要立即修复&#xff0c;传统方式要求重启系统——这无异于在高速公路上急刹车。Livepatch技术应运而生&#xff0c;…...

Ostrakon-VL-8B零售AI创新:用像素游戏化设计提升一线员工使用意愿

Ostrakon-VL-8B零售AI创新&#xff1a;用像素游戏化设计提升一线员工使用意愿 1. 项目背景与设计理念 在零售和餐饮行业&#xff0c;一线员工使用AI工具的意愿往往不高。传统工业级UI界面过于复杂&#xff0c;操作流程繁琐&#xff0c;导致员工抵触新技术。Ostrakon-VL-8B团队…...

安规设计规范-3(如何计算电气间隙和爬电距离)

详尽的计算方式建议参考各个标准的要求&#xff0c;本文只指出常规的基础计算流程。以下示例严格遵循 GB/T 16935.1-2023/IEC 60664-1:2020《低压系统内设备的绝缘配合》&#xff0c;选用储能 PCS&#xff08;储能变流器&#xff09;最常见的230V AC 电网侧对低压控制侧场景&am…...

SpringBoot + MongoDB 5分钟快速集成:从0到1实操指南

目录 MongoDB‌ 快速集成 常用API MongoDB‌ MongoDB‌ 是一个基于分布式文件存储的‌文档型数据库‌&#xff0c;属于 NoSQL 数据库中最接近关系型数据库的产品&#xff0c;旨在为 Web 应用提供高性能、高可用和可扩展的数据存储解决方案 。 MongoDB以灵活的无模式文档模型…...

苏州沃虎电子(VOOHU)10/100M集成式RJ45连接器SYT111B002BA2A1D产品介绍

苏州沃虎电子科技有限公司&#xff08;品牌&#xff1a;VOOHU&#xff09;供应的 SYT111B002BA2A1D 是一款高可靠性集成式RJ45连接器&#xff0c;专为10/100M以太网应用设计。该产品采用90侧插DIP封装&#xff0c;内置网络变压器&#xff0c;具备工业级宽温工作能力和优异的信号…...

如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系

如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系 在当今数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为每一个网站运营者必不可少的技能。其中&#xff0c;关键字排名软件扮演了极其重要的角色。如何自学使用关键字排名软件呢&#xff1f;关…...

事件驱动视觉革命:EVS技术如何重塑机器感知的未来格局

1. EVS技术&#xff1a;重新定义机器视觉的游戏规则 想象一下你正坐在高速行驶的列车上&#xff0c;窗外风景飞速掠过。传统相机就像每隔几秒才按下一次快门的游客&#xff0c;拍到的全是模糊不清的照片&#xff1b;而EVS&#xff08;事件驱动视觉传感器&#xff09;则像专业摄…...

在Ubuntu 22.04上搞定Gen6D位姿估计:从CUDA 11.8到Pytorch3D 0.7.8的完整环境搭建避坑指南

在Ubuntu 22.04上构建Gen6D位姿估计开发环境的全流程解析 计算机视觉领域的位姿估计技术正在重塑增强现实与机器人导航的边界。Gen6D作为香港大学团队开源的前沿项目&#xff0c;其无需CAD模型的特性为物体位姿识别提供了新思路。本文将彻底拆解Ubuntu 22.04环境下从驱动层到算…...