如何在 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 配置为服务之一,然后将其注入到容器中。

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

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

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

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

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

相关文章

TLS指纹跟踪网络安全实践(C/C++代码实现)

TLS指纹识别是网络安全领域的重要技术&#xff0c;它涉及通过分析TLS握手过程中的信息来识别和验证通信实体的技术手段。TLS&#xff08;传输层安全&#xff09;协议是用于保护网络数据传输的一种加密协议&#xff0c;而TLS指纹则是该协议在实际应用中产生的独特标识&#xff0…

1.0 Android中Activity的基础知识

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

第一百零四节 Java面向对象设计 - Java内部类成员

Java面向对象设计 - Java内部类成员 内部类可以访问其所有实例成员&#xff0c;实例字段和其封闭类的实例方法。 class Outer {private int value 2014;public class Inner {public void printValue() {System.out.println("Inner: Value " value);}} // Inner …

SAP PP学习笔记17 - MTS(Make-to-Stock) 按库存生产 的策略70,策略59

上几章讲了几种策略&#xff0c;策略10&#xff0c;11&#xff0c;30&#xff0c;40。 SAP PP学习笔记14 - MTS&#xff08;Make-to-Stock) 按库存生产&#xff08;策略10&#xff09;&#xff0c;以及生产计划的概要-CSDN博客 SAP PP学习笔记15 - MTS&#xff08;Make-to-St…

linux用户态操作GPIO首先需要export导出

在使用系统调用来实现 GPIO&#xff08;通用输入输出端口&#xff09;的输入输出操作时&#xff0c;同样需要先通过 export 属性文件来导出 GPIO&#xff0c;这是因为 Linux 内核对 GPIO 的管理和访问机制决定了这一点。 以下是具体原因&#xff1a; 内核设备模型&#xff1a…

Linux C语言:输入输出(printf scanf)

一、数据输出 1、C语言I/O操作由函数实现 #include <stdio.h> 2、字符输出函数 格式: int putchar( int c ) 参数: c为字符常量、变量或表达式 功能&#xff1a;把字符c输出到显示器上 返值&#xff1a;putchar函数的返回值是参数的ASCLL码值&#xff1b; #inclu…

【CTF-Events】R3CTF/YUANHENGCTF 2024 两道密码题记录一下

R3CTF2024 WP 文章目录 R3CTF2024 WPCryptoR0System考点&#xff1a;代码审计 ECDH R1System考点&#xff1a;代码审计 ECDH Crypto R0System 考点&#xff1a;代码审计 ECDH 打开代码后有两个小系统&#xff0c;看一下功能 然后再看一下登录之后有哪些功能 其实到这里就可以…

干货分享!2024年Instagram营销必备插件

Instagram是营销人员常用的社交媒体平台&#xff0c;通过提升品牌知名度来推动业务增长。今天给大家分享一些超实用的Instagram营销插件&#xff0c;无论是下载图片视频&#xff0c;还是预先发布帖子&#xff0c;这些工具都可以是你的得力助手&#xff0c;让你的INS运营效率蹭蹭…

spring常用注解(八)@Async

一、介绍 1、介绍 二、原理 三、集成与使用 1、集成方法 &#xff08;1&#xff09;开启 使用以下注解开启 EnableAsync &#xff08;2&#xff09;使用 在需要异步处理的方法上加上 Async 2、返回值 Async注解的方法返回值只能为void或者Future<T>。 &…

纠删码是什么?有什么作用?

在阿里云对象存储中使用的是用基于纠删码、多副本的数据冗余存储机制&#xff0c;将每个对象的不同冗余存储在同一个区域内多个设施的多个设备上&#xff0c;确保硬件失效时的数据持久性和可用性。这里我们来详细介绍一下什么是纠删码。 纠删码&#xff08;Erasure Coding&…

什么是覆盖索引 ?

走当前索引就足够&#xff0c;而无需回表就能找到所有数据&#xff0c;就叫覆盖索引。 比如 key1 上有索引。&#xff08;它是一个普通的二级索引&#xff09;。 那么select key1 from s1 where key1 a 这种就叫覆盖索引。 表现就是explain时&#xff0c; Extra 那里显示 …

【深度学习】使用 LSTM 网络预测水位数据

使用 LSTM 网络预测水位数据 在本文中&#xff0c;我们将介绍如何使用 LSTM&#xff08;长短期记忆&#xff09;神经网络来预测水位数据。我们将使用 Python 中的一些流行库&#xff0c;如 NumPy、Pandas 和 Keras。首先&#xff0c;我们将加载数据&#xff0c;然后预处理它以…

基于 Transformer 的大语言模型

语言建模作为语言模型&#xff08;LMs&#xff09;的基本功能&#xff0c;涉及对单词序列的建模以及预测后续单词的分布。 近年来&#xff0c;研究人员发现&#xff0c;扩大语言模型的规模不仅增强了它们的语言建模能力&#xff0c;而且还产生了处理传统NLP任务之外更复杂任务…

Pixi.js学习 (五)动画效果与变量逻辑控制

目录 前言 一、动画效果 1.1 帧频 1.2 帧频函数 二、变量逻辑控制 2.1 定义变量的语法 2.2 使用变量控制逻辑 2.3 使用变量控制追加效果 三、实战 例题一&#xff1a;完成天天酷跑 例题一代码&#xff1a; 总结 前言 为了提高作者的代码编辑水品&#xff0c;作者在使用博客的时…

遥感和GIS在滑坡、泥石流风险普查中的技术应用教程

原文链接&#xff1a;感和GIS在滑坡、泥石流风险普查中的技术应用教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247606346&idx5&snb98d2e84b0273507ec23d3d1212b8421&chksmfa8261adcdf5e8bb26dfa824d320d1754e83b5e0ca523545704e59a3cda8aa370387…

强烈推荐!Windows 11 24H2 版本系统下载(新功能多多)

微软向 Windows 11 Version 24H2 用户推送了 KB5036908 更新&#xff0c;标志着 24H2 版本的首次累积更新&#xff0c;更新后用户的系统版本号将升级至 26100.268。在新版本中&#xff0c;最显著的变化包括对文件资源管理器的改进、整合的 Copilot 功能、编辑 PNG 文件元数据的…

AI实时免费在线图片工具4:WordArt艺术字生成;IC-Light打光模型;screenshot to code图像直接生成网页

1、艺术字生成WordArt https://modelscope.cn/studios/WordArt/WordArt/summary?reftop.aibase.com 2、打光模型IC-Light https://huggingface.co/spaces/lllyasviel/IC-Light Screenshot to Code图像直接生成网页 https://huggingface.co/spaces/HuggingFaceM4/screen…

AI大模型智慧政务解决方案

随着AI大模型技术的蓬勃发展和普及应用&#xff0c;我们的政务治理正迎来一场波澜壮阔的革新巨浪。这场革新&#xff0c;不仅是技术层面的飞跃&#xff0c;更是一场深刻改变治理理念的伟大变革。它彻底颠覆了传统政务治理中依赖人力、效率低下、响应迟缓的“人盯人”模式&#…

10_Transformer预热---注意力机制(Attention)

1.1 什么是注意力机制(attention) 注意力机制&#xff08;Attention Mechanism&#xff09;是一种在神经网络中用于增强模型处理特定输入特征的能力的技术。它最早被应用于自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;特别是在机器翻译中&#xff0c;如Google的…

uniapp录音播放功能

ui效果如上。 播放就开始倒计时&#xff0c;并且改变播放icon&#xff0c;另外录音则停止上一次录音。 播放按钮&#xff08;三角形&#xff09;是播放功能&#xff0c;两竖是暂停播放功能。 const innerAudioContext wx.createInnerAudioContext();export default{data(){ret…