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

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

您可以发现, 日志被输出了两遍, 这是因为WebHost.CreateDefaultBuilder方法里面已经配置使用了AddConsole()方法, 我再配置一遍的话就相当于又添加了一个输出到控制台的日志提供商.

所以, 我可以不采用这个构建模式创建IWebHost, 改为直接new一个:

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

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

这样就正确了. 可以看到日志信息的第一行内容是一样的, 第二行是各自的日志信息.

 

日志的过滤

我们可以为整个程序设定日志记录的最低级别, 也可以为某个日志提供商和分类指定特定的过滤器.

设置全局最低记录日志的级别使用SetMinimumLevel()扩展方法:

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

如果想完全不输出日志的话, 可以把最低记录的级别设为LogLevel.None.

我们还可以为不同场景设置不同的最低记录级别:

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

然后分别建立这两个分类的logger, 并记录:

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

查看输出结果, 已经按配置进行了过滤:

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

这里可以使用完整的类名作为分类名:

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

然后使用ILogger<T>即可:

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

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

 

针对上面这个例子, 我们还可以使用配置文件:

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

相应的, 代码也需要改一下:

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

输出的效果是一样的.

 

日志提供商

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

Console, 使用logging.AddConsole()来启用.

Debug, 使用logging.AddDebug()来启用. 它使用的是System.Diagnostics.Debug的Debug.WriteLine()方法, 由于Debug类的所有成员都是被[Conditional("DEBUG")]修饰过了, 所以无法被构建到Release Build里, 也就是生产环境是无法输出的, 除非你把Debug Build作为部署到生产环境

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

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