ASP.NET Core 中间件 (Middleware)Diagnostics 使用. 对于中间件的介绍可以查看之前的文章 ASP.NET Core 开发 - 中间件 (Middleware) https://www.cnblogs.com/linezero/p/5529767.html .
Diagnostics 中间件, 主要功能是用于报告和处理 ASP.NET Core 中的异常和错误信息, 以及诊断 Entity Framework 核心迁移错误.
其中还有其他几项功能, 欢迎页, 错误代码页, 如 404 页等. 以及一个还算不错的日志查看功能, 这个功能也是很多人需要的功能, 直接在线查看日志.
下面来一一讲解功能.
新建 ASP.NET Core web Application 项目 -》Web 应用程序 选择不进行身份验证.
创建好的项目, 会自动引用 Diagnostics 中间件.
NuGet 引用:
Install-Package Microsoft.AspNetCore.Diagnostics
报告异常和错误信息
默认创建好的项目会自动在 Startup 中 Configure 方法加上这一段
- if (env.IsDevelopment())
- {
- App.UseDeveloperExceptionPage();
- App.UseBrowserLink();
- }
- else
- {
- App.UseExceptionHandler("/Home/Error");
- }
这就是异常信息的报告以及处理.
在开发环境下会显示详细的错误信息 App.UseDeveloperExceptionPage();, 在非开发环境, 跳转至 App.UseExceptionHandler("/Home/Error"); /Home/Error 页.
如果你想一直展示错误信息就将 App.UseDeveloperExceptionPage(); 放置在 if 外面. 或者在发布之后, 将对应的系统环境调成 Development 以显示错误信息.
项目中使用了 EF Core . 可以添加 App.UseDatabaseErrorPage(); 以显示 EF Core 相关信息.
欢迎页
在 Startup.cs 中的 Configure 方法加入: App.UseWelcomePage();
启动程序就会显示如下页面. 有扩展方法, 可以指定对应的页面.
HTTP 错误代码页
默认程序中 404 或者 500 等相关错误, 并不会展示页面, 只会返回对应的代码.
同样在 Startup.cs 中的 Configure 方法加入: App.UseStatusCodePages();
访问不存在的页面会显示如下.
下面是简单的自定义错误信息
App.UseStatusCodePages("text/plain", "Error, status code: {0} \r LineZero");
还可以使用
- App.UseStatusCodePagesWithRedirects("~/errors/{0}"); // 相对根路径
- App.UseStatusCodePagesWithRedirects("/base/errors/{0}"); // 绝对路径
也可以使用
App.UseStatusCodePagesWithReExecute("/error/http{0}");
上面两者的区别一个是跳转, 一个是执行.
日志查看 Elm
日志查看, 也是 Diagnostics 中间件的一个功能. 用起来也比较方便.
需要额外添加一个 Microsoft.AspNetCore.Diagnostics.Elm 包.
安装好包打开 Startup.cs , 首先在 ConfigureServices 方法加入服务.
- services.AddElm(elmOptions =>
- {
- elmOptions.Filter = (loggerName, loglevel) => loglevel == LogLevel.Debug;
- });
筛选日志级别为 Debug
然后再 Configure 方法加入
- App.UseElmPage();
- App.UseElmCapture();
App.UseElmPage(); 为指定日志显示页, App.UseElmCapture(); 记录日志.
运行程序访问 http://localhost:5000/Elm , 就可以查看一些信息记录.
这个组件还是有一些问题, 我们可以做一些改造, 更符合实际情况.
官方 GitHub:https://github.com/aspnet/Diagnostics
如果你觉得本文对你有帮助, 请点击 "推荐", 谢谢.
来源: http://www.bubuko.com/infodetail-3209951.html