zoukankan      html  css  js  c++  java
  • ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging




    常用的诊断中间件:

    • 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文件夹内

    再次运行

  • 相关阅读:
    iOS委托传值
    关于异步和多线程的关系
    删除xcode中的插件
    iOS Xcode常用插件
    关于ECSlidingViewController的使用
    iOS去掉tableview中无内容的cell
    iOS中block用法之两个界面传值问题
    cocoapods管理第三方类库
    在GitHub托管代码-终端命令
    vsCode快捷键
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/10946611.html
Copyright © 2011-2022 走看看