常用的诊断中间件:

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

UseWelcomePage

放在管道的最前面

网站启动之后

无论我输入任何的地址 都会到这个页面。因为他放在管道的最前面了

开发模式下显示异常的页面

这个中间件显示400到600之间的错误代码

先把上面两个注释掉,抛出异常看看会发生什么

在HomeController里面抛出个异常信息

需要把欢迎页的中间件也去掉

页面这里报了个错误 。我们继续运行 。

页面上显示的错误

然后我们再把这个中间件 启动一下。UseDeveloperExceptionPage

这样页面启动后,就可以看到异常的详细信息了。

这个页面只能在开发的时候用。

UseExceptionHandler

这是生成的时候用的

在HomeController里面自己写一个MyError的Action

改成自己创建的Action

创建MyError的view 页面

改成生产环境

报错会直接跳转到我们的异常页面

UseStatusCodePages


访问一个不存在的,使用了这个中间件就会返回一个状态码和文字

如果没有这个中间件呢?

这个页面是浏览器端返回的页面,服务器端我们就没有返回任何页面

最终这些都用上

UseDatabaseErrorPage

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

LOG


EventSource和DiagnosticSource 是在core里面内置的,默认就会使用
我们主要是使用ILogger,这里也主要讲ILogger

内置的 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


F12进去看源码

core里面默认已经添加了这几种

如果想改变这些默认的配置

读取配置文件的配置

这里暂时先注释掉

早HomeController里面使用方法,构造函数注入进来


新建常量

上面定义的常量在这里当做第一个参数。第二个参数就是我们记入的日志信息


控制台看到输出的日志信息
EventID是1000 日志信息在下面

主要的三个:分类、eventID、日志信息
日志内传入参数

也可以这么去写

推荐使用这种写法

看起来两种写法是一样的。但是对于其他Provider来说。这个id参数可以单独提出来,如果写在里面的话就提不出来。

配置

默认的配置

Debug以上的级别,日志都会记录下来

具体的可以看文档:

第三方log

core后来用的比较多的是EImah,这里也就说下EImah
nuget进行安装

输出到控制台还需要添加这个媒介

还有比较流行的sql server
这个不引入
这个不引入
还有这种文件的形式,把File也引入

配置方法,视频中没有录制

MinimumLevel.Debug()最小记录级别是Debug
MinimumLevel.Override("Microsoft", LogEventLevel.Information)如果遇到Microsoft的命名空间,记录最小级别是InfoMation
.Enrich.FromLogContext()通过上下文可以记录一些其他信息


视频里弹幕还是说NLog用的比较多一点

添加了两个sinks一个是Console一个是输出文件File

写到文件里文件名叫log.txt。每天生成一个文件

这里可以改成每分钟生成一个文件

最后创建这个log:

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


运行程序,控制台文字颜色已经发生变化

根目录有文件生成:

修改成生成到文件夹内:logs文件夹内

再次运行

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging的更多相关文章

  1. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道

    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道 语雀: https://www.yuque.com/yuejiangliu/dotnet/ ...

  2. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

    在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授 ...

  3. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置

    视频地址: https://www.bilibili.com/video/av38392956/?p=2 语雀 https://www.yuque.com/yuejiangliu/dotnet/ixt ...

  4. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 12. Views 下

    ASP.NET Core MVC 13. 安装前端库 Partial VIew 就是部分View,他没有自己的数据,数据来自图中白色的那块,它的数据需要传进去,第一个参数是View的名称,第二个参数就 ...

  5. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件

    注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureService ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 13. 安装前端库

    前端库使用npm进行安装,需要先建立webpack.json文件 因为我们没有使用npm安装任何库,所以npm的文件夹是空的 这里是用于开发时构建时引用的库写在这里 这里用到bootStrap 开发时 ...

  7. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 27. CICD Azure DevOps

    VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述 ...

  8. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 01. 创建项目 +项目结构和配置简介

    新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet ...

  9. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由

    视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...

  10. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View

    Controller父类会提供很多上下文的相关信息,还提供了很多封装的方法 返回的对象要求实现了IActionResult接口 继承父类,并引入命名空间 写this点就出现很多东西,这些就是上下文的信 ...

随机推荐

  1. 如何更改ORACLE 用户的 expired状态

    ORACLE(113) 版权声明:本文为博主原创文章,未经博主允许不得转载. oracle中, 经常用户的状态会变成locked, expired 等状态, 这种情况下怎么处理呢? 首先,  如果是l ...

  2. Go -- type 和断言 interface{}转换

    摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...

  3. ASP.NETCore使用AutoFac依赖注入

    原文:ASP.NETCore使用AutoFac依赖注入 实现代码 1.新建接口类:IRepository.cs,规范各个操作类的都有那些方法,方便管理. using System; using Sys ...

  4. 深入理解javascript之设计模式

    设计模式 设计模式是命名.抽象和识别对可重用的面向对象设计实用的的通用设计结构. 设计模式确定类和他们的实体.他们的角色和协作.还有他们的责任分配. 每个设计模式都聚焦于一个面向对象的设计难题或问题. ...

  5. BUPT复试专题—进程管理(2014网研)

    题目描述 在操作系统中,进程管理是非常重要的工作.每个进程都有唯一的进程标识PID.每个进程都可以启动子进程,此时我们称该它本身是其子进程的父进程.除PID为0的进程之外,每个进程冇且只冇一个父进程. ...

  6. Oracle db中禁止使用sqlplus的方法

    先记录下来: How to Disable a SQL*Plus Connection for a User (文档 ID 124121.1)

  7. 【转载】关于C#静态构造函数的几点说明

    一.定义 静态构造函数是C#的一个新特性,其实好像很少用到.不过当我们想初始化一些静态变量的时候就需要用到它了.这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次.也就是在 ...

  8. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  9. Java堆内存与栈内存对比

    在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有什么异同,以及和数据结构中的堆栈有何关系? 一.Java 堆存储空间 堆内存(堆存储空间)会在Java运行时分配 ...

  10. mt7620 wifi driver

    <*> Ralink RT2860 802.11n AP support [*] LED Support [*] WSC (WiFi Simple Config) [*] WSC 2.0( ...