ASP.NET Core 中间件Diagnostics使用
ASP.NET Core 中間件(Middleware)Diagnostics使用。對(duì)于中間件的介紹可以查看之前的文章ASP.NET Core 開發(fā)-中間件(Middleware)。
Diagnostics中間件,主要功能是用于報(bào)告和處理ASP.NET Core中的異常和錯(cuò)誤信息,以及診斷Entity Framework核心遷移錯(cuò)誤。
其中還有其他幾項(xiàng)功能,歡迎頁(yè),錯(cuò)誤代碼頁(yè)、如404 頁(yè)等。以及一個(gè)還算不錯(cuò)的日志查看功能,這個(gè)功能也是很多人需要的功能,直接在線查看日志。
下面來(lái)一一講解功能。
新建ASP.NET Core Web Application 項(xiàng)目-》Web應(yīng)用程序 選擇不進(jìn)行身份驗(yàn)證。
創(chuàng)建好的項(xiàng)目,會(huì)自動(dòng)引用Diagnostics 中間件。
NuGet引用:
Install-Package Microsoft.AspNetCore.Diagnostics
報(bào)告異常和錯(cuò)誤信息
默認(rèn)創(chuàng)建好的項(xiàng)目會(huì)自動(dòng)在Startup中Configure 方法加上這一段
if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseBrowserLink(); }else{app.UseExceptionHandler("/Home/Error"); }
這就是異常信息的報(bào)告以及處理。
在開發(fā)環(huán)境下會(huì)顯示詳細(xì)的錯(cuò)誤信息?app.UseDeveloperExceptionPage();,在非開發(fā)環(huán)境,跳轉(zhuǎn)至?app.UseExceptionHandler("/Home/Error");?/Home/Error頁(yè)。
如果你想一直展示錯(cuò)誤信息就將app.UseDeveloperExceptionPage(); 放置在if 外面。或者在發(fā)布之后,將對(duì)應(yīng)的系統(tǒng)環(huán)境調(diào)成Development 以顯示錯(cuò)誤信息。
項(xiàng)目中使用了EF Core 。可以添加 app.UseDatabaseErrorPage(); 以顯示EF Core 相關(guān)信息。
歡迎頁(yè)
在Startup.cs中的Configure 方法加入:app.UseWelcomePage();
啟動(dòng)程序就會(huì)顯示如下頁(yè)面。有擴(kuò)展方法,可以指定對(duì)應(yīng)的頁(yè)面。
?
HTTP錯(cuò)誤代碼頁(yè)
默認(rèn)程序中404 或者500 等相關(guān)錯(cuò)誤,并不會(huì)展示頁(yè)面,只會(huì)返回對(duì)應(yīng)的代碼。
同樣在Startup.cs中的Configure 方法加入:app.UseStatusCodePages();
訪問(wèn)不存在的頁(yè)面會(huì)顯示如下。
?
?
下面是簡(jiǎn)單的自定義錯(cuò)誤信息
app.UseStatusCodePages("text/plain", "Error, status code: {0} \r LineZero");
還可以使用
app.UseStatusCodePagesWithRedirects("~/errors/{0}"); // 相對(duì)根路徑
app.UseStatusCodePagesWithRedirects("/base/errors/{0}"); // 絕對(duì)路徑
也可以使用
app.UseStatusCodePagesWithReExecute("/error/http{0}");
上面兩者的區(qū)別一個(gè)是跳轉(zhuǎn),一個(gè)是執(zhí)行。
日志查看Elm
日志查看,也是Diagnostics 中間件的一個(gè)功能。用起來(lái)也比較方便。
需要額外添加一個(gè)?Microsoft.AspNetCore.Diagnostics.Elm 包。
安裝好包打開Startup.cs ,首先在?ConfigureServices 方法加入服務(wù)。
services.AddElm(elmOptions =>{elmOptions.Filter = (loggerName, loglevel) => loglevel == LogLevel.Debug;});篩選日志級(jí)別為Debug
然后再Configure 方法加入
? ? ? ? ? ?app.UseElmPage();app.UseElmCapture();?
app.UseElmPage(); 為指定日志顯示頁(yè),app.UseElmCapture(); 記錄日志。
運(yùn)行程序訪問(wèn)?http://localhost:5000/Elm ,就可以查看一些信息記錄。
?
這個(gè)組件還是有一些問(wèn)題,我們可以做一些改造,更符合實(shí)際情況。
官方GitHub:https://github.com/aspnet/Diagnostics
?原文地址:http://www.cnblogs.com/linezero/p/Diagnostics.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core 中间件Diagnostics使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .NET项目版本号的小随笔
- 下一篇: TypeScript 2.1发布