ASP.NET Core扩展库之日志成果的利用详解

上一篇我们对Xfrogcn.AspNetCore.Extensions扩展库成果举办了简朴的先容,从这一篇文章开始,我将慢慢先容扩展库中的焦点成果。
    日志作为非业务的通用规模基本成果,有很是多的技能实现,这些第三方库制止了我们耗费时间去反复实现,不外,许多日志库设置巨大,不易于利用,入手较难,而有些库大概与ASP.NET Core的结归并欠好。
    假如我们没有对所利用的日志库举办具体相识,日志库也大概发生严重的问题,在我的开产生涯中,曾经碰着过多次因为日志库而导致的出产变乱。
    扩展库日志模块致力于将日志相关的最佳实践举办封装,简化日志库的利用,让我们真正从非业务代码中解放出来。

一、简介 

ASP.NET Core扩展库中日志成果是对Serilog的进一步封装,之所以选择Serilog,源于我们在开拓工程中的实践,我们的日志库经验了本身开拓、选择利用NLog,最后定格在利用Serilog库上。
    Serilog日志库也并不长短常易于利用,并且大概也缺少一些须要成果,这就是我们需要进一步封装的原因。
    日志成果默认提供了Console及File两种日志方针,他们都别离支持文本和Json名目。
    我们也添加了日志的分类、日志记录层级的动态修改、当地文件日志的按时清理、当地日志文件的按目次存储、对容器化下EFK日志架构的支持、以及日志在测试中的支持成果等。

二、利用

日志库是跟着扩展库一起启用的,最简朴的环境是启用扩展库即可,默认设置将开启文件日志方针,日志存入应用下Logs目次,以日期为文件夹,以日志名称为文件名称。
    开启扩展库有两种方法,可以在IHostBuilder上通过UseExtensions要领,可能在Startup启动类ConfigureServices要领中通过IServiceCollection的AddExtensions要领。

// 通过IHostBuilder上的UseExtensions要领 // Program.cs .NET 5.0 public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseExtensions(args); webBuilder.UseStartup<Startup>(); }); }

可能:

// 在Startup类中 public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddExtensions(Configuration); } }

三、设置

日志的设置可以通过代码方法可能通过设置文件方法。
    回收代码方法,在UseExtensions要领可能AddExtensions中传入设置工具委托即可:

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseExtensions(args, config=> { config.AppLogLevel = Serilog.Events.LogEventLevel.Verbose; config.SystemLogLevel = Serilog.Events.LogEventLevel.Verbose; }); webBuilder.UseStartup<Startup>(); });

假如回收设置文件方法,只需在设置源(如appsettings.json)中配置相关的设置字段:

{ "AppLogLevel": "Verbose", "AllowedHosts": "*" }

假如都回收,代码方法将会包围设置文件方法。
    除此之外,假如你需要对Serilog设置举办更具体的节制,那么可以直接在UseExtensions要领可能AddExtensions中传入Serilog的日志设置委托。此项委托的配置将包围上述的自动设置。

四、设置日志级别

为了简化设置,在扩展库中,我们按照日志名称将日志分为系统日志、应用日志以及EFCore日志,他们别离通过设置中的AppLogLevel、SystemLogLevel及EFCoreCommandLevel属性来节制。日志级此外设置都支持运行时动态修改,无需重启应用。

日志分类

 

对应日志名

 

对应设置字段

 

默认级别

 

系统日志

 

Microsoft.* 以及 System.*

 

SystemLogLevel

 

Warning

 

EFCore日志

 

Microsoft.EntityFrameworkCore.Database.Command

 

EFCoreCommandLevel

 

Information

 

应用日志

 

除开系统日志及EFCore日志之外的日志

 

AppLogLevel

 

Information

 

五、日志级此外动态修改

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsjfyp.html