我們經常遠端連線伺服器去檢視紀錄檔,比較麻煩,如果直接存取專案的某個頁面就能實時檢視紀錄檔就比較奈斯了,花了1天研究了下.net core 紀錄檔的原理,結合blazor實現了基本效果。
為毛用記憶體儲存?因為快,主要目的是實時監控,方便偵錯,只需要最近一段時間的資料,所以記憶體是最合適的。
由於資料是儲存在全域性靜態變數中的(執行緒安全的),所以多個人同時開啟頁面檢視紀錄檔其實看的是同一份資料。
這個庫預設提供了與.net core預設的紀錄檔框架的繼承,但你也可以用自己的方式把資料儲存到那個靜態變數中。
必須是asp.net 6.x的專案,至於是mvc webapi razorpages還是blazor無所謂,都可以簡單設定支援blazor server,assembly模式按沒考慮過。
我的專案是webapi,啟用blazor server有影響嗎?完全木有,asp.net core本就是基礎web框架,同一個專案可以同時支援webapi mvc razorpage和blazor的。
若你不熟悉如何在現有專案整合blazor server,可以建個空的blazor server專案,然後按下面的步驟操作
在startup.cs或program.cs中
//註冊服務
services.AddRazorPages();
services.AddServerSideBlazor();
//設定路由
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
然後將你新建的空的blazor server專案中的如下檔案和目錄拷貝過來
注意修改名稱空間,尤其注意_Layout.cshtml head部分<link href="ZLJ.FYJIOT.ApiHost.styles.css" rel="stylesheet" />前面的名稱空間替換為你當前專案的名稱空間,這個是當前專案中的元件的樣式檔案,自動生成的
在program.cs中
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging(b=>b.AddBlazorServerLogger())
現在啟動,導航到 /log-blazor 頁面看效果。
目前做的比較簡單,預設捲動刪除10W條、記錄所有類別和級別的紀錄檔、以及元件的樣式都是固定的,有興趣可以自己改。
預設為你建好了頁面 /log-blazor,這要求你在App.razor中設定AdditionalAssemblies="new Assembly[]{ typeof(BlazorServerLogger).Assembly}",如果你不想要這個頁面,可以自己建頁面,然後引入BlazorServerLogger元件,升值你也可以直接讀取BlazorServerLoggerExt.MsgContainer中的當前紀錄檔資訊,自己做顯示。
如果你記錄紀錄檔使用的不是微軟的ILogger介面,或者你使用的第三方紀錄檔框架沒有與微軟的紀錄檔框架整合,那麼上面的步驟3就不用做了,而是在記錄紀錄檔時直接呼叫BlazorServerLoggerExt.Add靜態方法就行了。
不過這樣你原來的程式碼得改,最好與你自己目前的框架做個整合,舉個例子:若你原來是直接使用的log4net,則你需要自定義一個Appender,然後呼叫BlazorServerLoggerExt.Add,這樣你原來記錄紀錄檔的方式不變。
原始碼:https://gitee.com/bxjg1987_admin/abp/tree/master/src/Libs/BXJG.BlazorServerLogger
本文來自部落格園,作者:變形精怪,轉載請註明原文連結:https://www.cnblogs.com/jionsoft/p/16841319.html