当前位置: 首页 > 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 配置为服务之一,然后将其注入到容器中。

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

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

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

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

相关文章:

  • selenium execute_script常用方法汇总
  • 如何选择最佳的APP封装平台-小猪APP分发为您解忧
  • Linux基础 (十八):Libevent 库的安装与使用
  • 冒泡排序的详细介绍 , 以及c , python , Java的实现方法
  • 使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署
  • 给你一个扫码支付的二维码,如何写测试用例?
  • 计算机专业在未来的发展与抉择
  • 【Linux】基础IO——文件描述符,重定向
  • 1.0 Android中Activity的基础知识
  • 线代知识点总结
  • 案例学习-存量更新规划实施探索(武汉)
  • C#操作MySQL从入门到精通(17)——使用联结
  • MyBatis 关于查询语句上配置的详细内容
  • 基于STM32和人工智能的智能家居监控系统
  • 这三款使用的视频、图片设计工具,提供工作效率
  • [Algorithm][贪心][最长递增子序列][递增的三元子序列][最长连续递增序列][买卖股票的最佳时机][买卖股票的最佳时机Ⅱ]详细讲解
  • 手把手教你入门vue+springboot开发(三)--登录功能后端
  • 三款有3D效果的js图表库
  • 【SQLAlChemy】表之间的关系,外键如何使用?
  • Linux 基础IO 二
  • 找工作小项目:day15-macOS支持、完善逻辑
  • 植物大战僵尸杂交版 v2.0.88 mac版 Plants vs. Zombies 杂交版下载
  • PHP中的while循环:用法、技巧与最佳实践
  • 如何解决跨境传输常见的安全及效率问题?
  • 『大模型笔记』主成分分析(PCA)解释:简化机器学习中的复杂数据!
  • springboot与flowable(5):任务分配(表达式)
  • 如何使用CCS9.3打开CCS3.0工程
  • Stable Diffusion 3 Medium 模型
  • 数据分析------统计学知识点(五)
  • Superset二次开发之Git篇 git remote