常用的诊断中间件:

  • 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. flask使用debug模式时,存在错误时,会占用设备内存直至服务重启才释放;debug模式会开启一个守护进程(daemon process)

    函数调用顺序flask的app.py的run-->werkzeug的serving.py的run_simple-->调用werkzeug的debug的__init__.py里的类Debug ...

  2. C++中的sort函数

    (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...

  3. [Javascript] Replicate JavaScript Constructor Inheritance with Simple Objects (OLOO)

    Do you get lost when working with functions and the new keyword? Prototypal inheritance can be compl ...

  4. SolidEdge 如何绘制剖视图

    如果要创建剖视图,则点击切割平面按钮,然后绘制剖面线,画好之后点击完成   然后点击剖视图按钮,鼠标单击刚才的剖面线,往要的方向拖动,即可生成剖面视图   剖视图有时也需要用到旋转剖视图 如下图所示, ...

  5. BZOJ 3363 POJ 1985 Cow Marathon 树的直径

    题目大意:给出一棵树.求两点间的最长距离. 思路:裸地树的直径.两次BFS,第一次随便找一个点宽搜.然后用上次宽搜时最远的点在宽搜.得到的最长距离就是树的直径. CODE: #include < ...

  6. Django-权限信息初始化

    数据库 from django.db import models class Menu(models.Model): """ 菜单组: """ ...

  7. CentOS笔记-其他杂记

    1.忘记密码时,可以用single模式来修改密码,为了安全,可以禁用single模式,参考网址如下 Centos服务器禁止单用户模式(single)来增强系统安全 2.远程登录:ssh root@xx ...

  8. bash shell和进程

    1 exec builtin 不创建子shell,在原进程的上启动新的脚本,但是它会把老shell的环境清理掉,所以,它从原shell中什么也不继承,在一个干净的环境中执行新的脚本.执行完之后退出当前 ...

  9. BZOJ5379: Tree

    BZOJ5379: Tree Description JudgeOnline/upload/201806/1.pdf 题解Here! 题目大意就是:1. 换根.2. 对$LCA(u,v)$的子树修改. ...

  10. POJ1144 Network 无向图割点

    题目大意:求以无向图割点. 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点. 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v-&g ...