ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Ultimate ASP.NET CORE 6.0 Web API --- 读书笔记(2)

2022-06-16 19:36:04  阅读:162  来源: 互联网

标签:CORE ASP string 读书笔记 void public message 日志 logger


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有已经实现了的日志服务,但是一般在我们自己的项目中,我们会创建自己的日志服务

我们会创建一个抽象层,这样可以让我们将日志的实现隐藏在接口后面,在某些时候切换日志的实现但是对上层没有影响

  1. 首先创建一个接口库Contracts,然后创建一个日志实现库LoggerService,让LoggerService依赖Contracts

  2. 我们的服务会有四个方法,然后在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

  1. 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的一个包装

  1. 配置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>
  1. 配置日志服务

在主项目中,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();

这样,在每次需要使用日志服务时,只需要通过构造函数依赖注入就可以直接使用了

标签:CORE,ASP,string,读书笔记,void,public,message,日志,logger
来源: https://www.cnblogs.com/huangwenhao1024/p/16383161.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有