用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目 (2)

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

同时这也允许在程序的任何地方注入IOptions<FirstConfig>了:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

这个Configure方法不仅仅可以映射ConfigurationRoot, 还可以映射配置的一部分:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

 

配置变化

在项目运行的时候, 项目的配置信息可能会发生变化.

当采用的是基于文件的配置时, 如果配置数据有变化了, 我们应该让配置模型重新加载, 这就需要把AddJsonFile里面的配置属性 ReloadOnChange 设置为 true:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

这时, 无论在哪各地方使用了IConfigurationRoot和IConfiguration, 它们都会反映出最新的值, 但是IOptions<T>却不行. 即使文件变化了并且配置模型也通过文件提供商进行了更新, IOptions<T>的实例仍然包含的是原始值.

为了让配置数据可以在这种强类型映射的类上体现, 就需要使用IOptionsSnapshot<T>:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目


IOptionsSnapshot<T> 的开销很小, 可以放心使用

 

日志 

ASP.NET Core 提供了6个内置的日志提供商。

需要使用日志的话,只需注入一个ILogger对象即可,不过该对象首先要在DI容器中注册。

这个ILogger接口主要是提供了Log方法:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

记录Log的时候使用Log方法即可:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

不过可以看到,该方法参数很多,用起来还是略显麻烦的。

幸运的是,针对Log还有几个扩展方法,他们就简单了很多:

LogCritical,用来记录严重的事情

LogDebug,记录调试信息

LogError,记录异常

LogInformation,记录信息性的事情

LogTrace,记录追踪信息

LogWarning,记录警告信息

 

在项目中配置和使用Log,只需在Program.cs里调用IWebHostBuilder的ConfigureLogging扩展方法即可:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

本例中,我们把log配置成在控制台输出。

如果只是输出到控制台,其实我们就多此一举了,因为CreateDefaultBuilder这个方法里已经做了一些Log的配置,看一下反编译的源码:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

可以看到logging的一些配置数据是从整体配置的Logging部分取出来的,然后配置了使用输出到控制台和Debug窗口的提供商。

记录Log的时候,通常情况下使用那几个扩展方法就足够了:

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

请注意,这里我注入的是ILogger<T>类型的logger,其中T可以用来表示日志的分类,它可以是任何类型,但通常是记录日志时所在的类。

运行项目后,可以看到我记录的日志:

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

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