lognal
外觀與行為都像終端機的日誌檢視器,可用於 Web 與 Flutter。它把日誌畫在畫布上,而不是每行建立一個元素,所以無論訊息來得多快、歷史有幾萬筆,一個畫格的成本都一樣,應用程式不必自己做主控台面板。
關於這個專案
lognal 是給需要在自己畫面上顯示日誌的應用程式準備的日誌檢視器:網頁裡的主控台面板、Flutter 應用程式的除錯畫面,或是讀取日誌檔案的視窗。項目以一般資料保存,畫布上只繪製看得見的行,所以一個畫格的成本取決於畫面上顯示的內容,而不是歷史的長度。底下的核心——儲存、篩選、文字排列與版面配置——用 TypeScript 與 Dart 各寫了一遍,逐個檔案對應,因此一行在哪裡換行、佔多寬、如何被搜尋命中,在瀏覽器與應用程式裡都一樣。
它會照搬執行環境原本就在輸出的內容:瀏覽器裡的 console.log、console.table 與 console.group,Flutter 裡的 print 與 debugPrint,原本的輸出也照常運作。它能讀取日誌檔案、判斷編碼、把 ANSI 跳脫碼轉成顏色,還能追蹤持續增長的檔案。物件、清單、對應表與錯誤在記錄的那一刻被擷取,可以就地展開與收合。工具列可以跟隨新日誌、依文字與層級篩選,搜尋時標示所有相符之處而不隱藏其餘內容;開啟輸入列後,命令會交給處理函式,並印出回覆。韓文等全形字元各佔兩格,不會打亂格線,換行時韓文單字不會被拆開,輸入列會等輸入法組字結束。控制項都是具有無障礙名稱的真正按鈕,看得見的項目也會同步到一份隱藏清單,供螢幕閱讀器讀取。
npm 套件沒有執行階段相依:React 是選用的同層相依,只有使用 lognal/react 裡的元件時才需要,樣式表載入一次即可。Flutter 套件只相依 Flutter SDK,建立在 widgets 層之上,不用 Material 也不用 Cupertino,放進任何應用程式都不會帶進第二套設計系統。內建六套配色,auto 跟隨系統的淺色或深色設定,自訂主題只需一組 CSS 自訂屬性或一次 buildTheme 呼叫。JavaScript 套件是 ESM,附帶 TypeScript 型別宣告;兩個套件各自維護版本號與更新紀錄。
功能
文件網站
TypeScript 型別
多語言支援
經測試驗證
跨平台支援
內建無障礙支援
深色模式
支援搖樹優化
零相依套件
