日誌解析與遮罩

把正式環境的日誌檔案拖進來,得到一張可篩選的表格:Apache/Nginx、JSON Lines 和 syslog 自動辨識,敏感值自動遮罩,匯出乾淨的 CSV、JSON 或文字。檔案永遠不會離開你的瀏覽器——解析在本機進行,這正是這個頁面存在的全部理由。

這個頁面如何處理你的日誌

日誌檔案只有變成表格才有用:一欄是時間,一欄是級別,訊息不用捲動原始文字就能讀。本頁面把每一行解析成這些欄位,統計各級別的數量,並讓你篩選出真正重要的行——只看錯誤,或者所有提到某個主機名、某個路徑、某個使用者的行。表格顯示前 1,000 筆符合行;計數涵蓋讀取的全部內容,所以你始終知道篩選器藏起的是九行還是九千行。

檔案按 1 MB 分塊讀取,而不是作為一個整字串載入,這樣幾 MB 的正式環境日誌在載入時不會凍住分頁。解析出的前 20,000 行會保留下來用於篩選和匯出;超過這個數量後,頁面仍會統計每一行並如實報告總數。如果你的檔案比這還大,請先篩選再匯出——或者把檔案拆開跑兩次。整個流程不觸碰任何網路:File API 讀取位元組,解析器在頁面中執行,匯出也由同一批本機行組裝而成。

遮罩是模式比對,不是保證

遮罩會隱藏共享日誌中最常洩漏的值:電子郵件地址、IP 地址、Bearer 權杖、AWS 存取金鑰 ID,以及寫在 api_key、secret、password 或 token 標籤後面的值。它預設開啟,同時作用於表格和每一種匯出格式。但它只是模式比對,模式會漏掉東西——格式不尋常的權杖、跨行拆開的密鑰、能識別某個客戶的內部主機名。把匯出當作「更安全」,而不是「安全」:傳送到任何地方之前先通讀一遍,尤其是傳到組織之外。如果你為了自己偵錯需要原始值,關掉遮罩即可——開關就在表格上方。

正是這個區別,決定了這個頁面存在的意義。把正式環境的日誌貼到聊天視窗或線上檢視器裡,等於把它的內容永久交給第三方;在本機解析,則什麼都不交給任何人。託管檢視器的便利,永遠不值得拿日誌的內容去換,而一個從不發出請求的瀏覽器分頁,是確知這一點的最簡單辦法。

常見問題

我的日誌檔案會離開瀏覽器嗎?

不會。檔案透過 File API 讀取並在本機解析;什麼都不上傳,完全沒有伺服器呼叫。這正是關鍵所在:正式環境的日誌裡含有地址、權杖和使用者資料,這些不應該被貼到聊天視窗,也不應該上傳到隨手找到的檢視器。

能辨識哪些日誌格式?

Apache/Nginx combined 存取日誌、JSON Lines(每行一個 JSON 物件)、syslog 行,以及一種通用兜底模式——掃描任意行中的級別關鍵字。自動偵測依序嘗試 combined、JSON、syslog、通用模式——如果自動偵測猜錯,也可以明確指定格式。

遮罩到底隱藏什麼?

電子郵件地址、IPv4 和 IPv6 地址、Bearer 權杖、AWS 存取金鑰 ID,以及 api_key/secret/password/token 標籤之後的值。它是模式比對,不是保證:不尋常的格式會漏過去,所以把匯出傳送到任何地方之前先檢查一遍。遮罩預設開啟,同時作用於表格和匯出。

能開啟多大的檔案?

檔案按 1 MB 分塊讀取,幾 MB 的日誌不會凍住分頁。所有行都會被計數,解析出的前 20,000 行保留用於篩選和匯出,表格顯示前 1,000 筆符合行。更大的任務請先篩選,再匯出。

為什麼有些行看起來像錯誤,級別卻是「info」?

存取日誌沒有級別欄位,所以級別由 HTTP 狀態推斷:5xx 為 error,4xx 為 warning,其餘為 info。JSON 行在有自己的 level 欄位時使用它。如果一行看起來被分錯了類,它旁邊的狀態碼或訊息文字才是事實依據。