ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_02

常用的诊断中间件:

  • UseDeveloperExceptionPage
  • UseStatusCodePages:返回 400~600 的状态码
  • UseExceptionHandler 自定义异常的处理器
  • UseWelcomePage:欢迎页,网站还在开发时可以启用该中间件
  • UseDatabaseErrorPage
UseWelcomePage

放在管道的最前面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_03
网站启动之后
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_04
无论我输入任何的地址 都会到这个页面。因为他放在管道的最前面了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_05
开发模式下显示异常的页面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_06
这个中间件显示400到600之间的错误代码
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_07
先把上面两个注释掉,抛出异常看看会发生什么
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_08
在HomeController里面抛出个异常信息
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_09
需要把欢迎页的中间件也去掉
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_10

页面这里报了个错误 。我们继续运行 。
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_11
页面上显示的错误
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_12
然后我们再把这个中间件 启动一下。UseDeveloperExceptionPage
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_13
这样页面启动后,就可以看到异常的详细信息了。
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_14
这个页面只能在开发的时候用。
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_15

UseExceptionHandler

这是生成的时候用的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_16
在HomeController里面自己写一个MyError的Action
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_17
改成自己创建的Action
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_18
创建MyError的view 页面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_19
改成生产环境
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_20
报错会直接跳转到我们的异常页面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_21


 

UseStatusCodePages

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_22
访问一个不存在的,使用了这个中间件就会返回一个状态码和文字
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_23
如果没有这个中间件呢?
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_24
这个页面是浏览器端返回的页面,服务器端我们就没有返回任何页面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_25
最终这些都用上
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_26

UseDatabaseErrorPage

和EF的迁移有关
迁移之后有个页面,让你点击应用这个迁移。

LOG


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_27
EventSource和DiagnosticSource 是在core里面内置的,默认就会使用
我们主要是使用ILogger,这里也主要讲ILogger
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_28

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_29
 

内置的 Log Providers:

  • Console
  • Debug:VS Debug 窗口
  • EventSource:可以做 Event Tracing
  • EventLog:将 Log 写入 Windows 事件 Log
  • TraceSource:仅支持完整的 .NET Framework
  • Azure App Service:使用Azure的时候使用

 

Log 等级:

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Critical


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_30
F12进去看源码
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_31
core里面默认已经添加了这几种
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_32
如果想改变这些默认的配置
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_33

读取配置文件的配置
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_34
这里暂时先注释掉
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_35

早HomeController里面使用方法,构造函数注入进来
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_36

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_37
新建常量
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_38
上面定义的常量在这里当做第一个参数。第二个参数就是我们记入的日志信息
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_39
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_40
控制台看到输出的日志信息
EventID是1000 日志信息在下面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_41
主要的三个:分类、eventID、日志信息
日志内传入参数
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_42
也可以这么去写
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_43
推荐使用这种写法
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_44
看起来两种写法是一样的。但是对于其他Provider来说。这个id参数可以单独提出来,如果写在里面的话就提不出来。
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_45

配置

默认的配置
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_46
Debug以上的级别,日志都会记录下来
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_47
具体的可以看文档:
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_48

第三方log

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_49

core后来用的比较多的是EImah,这里也就说下EImah
nuget进行安装
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_50
输出到控制台还需要添加这个媒介
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_51
还有比较流行的sql server
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_52这个不引入
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_53这个不引入
还有这种文件的形式,把File也引入
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_54
配置方法,视频中没有录制

MinimumLevel.Debug()最小记录级别是Debug

MinimumLevel.Override("Microsoft", LogEventLevel.Information)如果遇到Microsoft的命名空间,记录最小级别是InfoMation

.Enrich.FromLogContext()通过上下文可以记录一些其他信息

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_55
视频里弹幕还是说NLog用的比较多一点
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_56

添加了两个sinks一个是Console一个是输出文件File
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_57
写到文件里文件名叫log.txt。每天生成一个文件
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_58
这里可以改成每分钟生成一个文件
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_中间件_59
最后创建这个log:

.CreateLogger()
然后在这里使用这个Serilog

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_60
运行程序,控制台文字颜色已经发生变化
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_ide_61
根目录有文件生成:
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_microsoft_62

修改成生成到文件夹内:logs文件夹内
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_sed_63
再次运行
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging_asp.net core 2.2_64