Ultimate ASP.NET CORE 6.0 Web API --- 读书笔记(2)
2022/6/17 1:20:05
本文主要是介绍Ultimate ASP.NET CORE 6.0 Web API --- 读书笔记(2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2 Configuring a Logging Service
本文内容来自书籍: Marinko Spasojevic - Ultimate ASP.NET Core Web API - From Zero To Six-Figure Backend Developer (2nd edition)
使用Log服务可以让我们了解程序在运行过程中产生的一些信息
.NET Core有已经实现了的日志服务,但是一般在我们自己的项目中,我们会创建自己的日志服务
我们会创建一个抽象层,这样可以让我们将日志的实现隐藏在接口后面,在某些时候切换日志的实现但是对上层没有影响
-
首先创建一个接口库
Contracts
,然后创建一个日志实现库LoggerService
,让LoggerService
依赖Contracts
-
我们的服务会有四个方法,然后在
Contracts
中的ILoggerManager
加入这四个方法- Info messages
- Debug messages
- Warning messages
- Error messages
public interface ILoggerManager { void LogInfo(string message); void LogWarn(string message); void LogDebug(string message); void LogError(string message); }
在实现这个接口之前,需要在LoggerService
安装日志实现库NLog
- 在
LoggerService
中实现ILoggerManager
接口
public class LoggerManager : ILoggerManager { private static ILogger logger = LogManager.GetCurrentClassLogger(); public LoggerManager() {} public void LogDebug(string message) => logger.Debug(message); public void LogError(string message) => logger.Error(message); public void LogInfo(string message) => logger.Info(message); public void LogWarn(string message) => logger.Warn(message); }
可以看到,我们的实现,只是对NLog
的一个包装
- 配置
NLog
NLog
需要知道我们的日志文件放在哪里,文件的命名规则是什么,最小的日志等级是多少
需要在项目中创建配置文件nlog.config
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Trace" internalLogFile=".\internal_logs\internallog.txt"> <targets> <target name="logfile" xsi:type="File" fileName=".\logs\${shortdate}_logfile.txt" layout="${longdate} ${level:uppercase=true} ${message}"/> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="logfile" /> </rules> </nlog>
- 配置日志服务
在主项目中,Program.cs
中,配置日志服务
LogManager.LoadConfiguration( string.Concat(Directory.GetCurrentDirectory(), "/nlog.config"));
配置之后,我们需要将日志服务注入到IoC容器中
有三种方法注入,分别是
AddSingleton
,单例,全局只有一个AddScoped
,每次请求,都会创建一个AddTransient
,临时对象,每次都会创建
创建一个扩展方法
public static void ConfigureLoggerService(this IServiceCollection services) => services.AddSingleton<ILoggerManager, LoggerManager>();
在Program.cs
中注入服务
builder.Services.ConfigureLoggerService();
这样,在每次需要使用日志服务时,只需要通过构造函数依赖注入就可以直接使用了
这篇关于Ultimate ASP.NET CORE 6.0 Web API --- 读书笔记(2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#