MailVSR MailVSR 三分鐘搞定你的企業網站

操作日誌

操作日誌記錄「誰在後台做了什麼」——登入登出、設定變更、帳號異動、刪除動作都會留下紀錄。它是稽核軌跡的第一站:當您想知道「這條規則是什麼時候被誰改掉的」、「昨天有沒有人動過 SMTP 設定」,答案就在這一頁。

這一頁同時收錄另外三種與管理介面本身有關的日誌:Web 介面的存取記錄、Web 介面的錯誤記錄,以及 PHP 執行核心的日誌。也就是說,「管理介面出了什麼事」都集中在這一頁。

什麼時候會用到這一頁:

  • 要追查某項設定「是誰、什麼時候改的」
  • 想確認有沒有異常的登入嘗試或非預期的管理操作
  • 管理介面出現 500 錯誤、白畫面,需要看錯誤原因
  • 要確認某個功能是不是因為 PHP 執行錯誤而失敗
  • 稽核需求:需要提出某段期間的管理操作紀錄

頁面組成

頁面分成三個頁籤:

  • 記錄:選日誌項目 → 選檔案 → 瀏覽內容(主要使用區)
  • 設定:這個頁面四個日誌檔共用的輪替設定(logrotate)
  • 空間使用:這四個日誌檔(含輪替檔與壓縮檔)各佔多少空間

日誌項目與檔案

第一層「日誌項目」有四個選項,選定後第二層「日誌檔案」會列出該項目的輪替檔(新→舊):

日誌項目 檔案 內容
操作日誌 /var/log/webadmin.log 管理介面的操作軌跡
Web界面操作日誌 /var/log/webadmin/access.log Web 介面的存取記錄(誰在什麼時候請求了哪個網址)
Web界面錯誤日誌 /var/log/webadmin/error.log Web 介面的錯誤(4xx/5xx、權限、上游失敗)
Web核心日誌 /var/log/php8.4-fpm.log PHP 執行核心的日誌(程式例外、啟動失敗)

操作日誌的每一行長這樣:

2026-09-13T00:14:46 vsr3 [admin@127.0.0.1] tag: msg

依序是「時間、主機名、[操作者@來源IP]、分類標籤、訊息」。[admin@127.0.0.1] 這一段就是稽核的關鍵——它告訴您「誰從哪裡」做的。分類標籤例如 log/rotate、log/file、auth/login、user/account 等,可以看出動作的種類。

檔案清單只會列出「合法輪替檔名」(webadmin.log、webadmin.log.1、webadmin.log.2.gz…),每個檔名後面會標示最後修改時間,方便判斷哪一支是最新正在寫入的。

記錄頁籤:查詢與閱讀

  • 搜尋框:全文檢索日誌內容,輸入即時生效(不必按 Enter)
  • 搜尋語法:字A,字B=任一命中(OR);字A+字B=兩個都要命中(AND);其他寫法一律當成單一字串比對。兩種符號混用(例如 A,B+C)不會被拆解,會整串當成一個關鍵字,結果通常什麼都找不到
  • 比對不分大小寫
  • 欄位:只有「日誌內容」一欄,可點標題切換排序方向
  • 預設排序:依內容由大到小(desc)。因為每行都以時間開頭,這相當於最新在上面
  • 每頁 50 筆,下方可換頁;總筆數顯示在清單上方
  • 沒有資料時顯示「暫無管理介面日誌資料」

壓縮檔也能查:.gz 的輪替檔會自動解壓後再搜尋,不必手動下載解壓縮。

匯出日誌檔

選定檔案後按「匯出」,會以純文字檔下載該檔的完整內容(不受畫面上的搜尋與分頁影響)。

下載檔名會自動加上時間戳,避免覆蓋先前下載的檔案:

  • 純文字檔:接在尾端 → webadmin.log_20260824-161832
  • 壓縮檔:插在 .gz 之前 → webadmin.log.2_20260824-161832.gz

匯出期間畫面會顯示「匯出中…」。匯出是由系統以 root 權限讀取檔案,所以即使日誌檔的權限是 root 專屬,一樣匯得出來(這是刻意的設計,管理介面本身不需要具備系統日誌權限)。

刪除日誌檔

刪除分成兩種情況,系統會自動判斷,並在確認視窗中顯示對應文字:

  • 目前正在寫入的檔案(活檔):確認視窗顯示「此為目前正在寫入的日誌,刪除將僅清空其內容(檔案保留)。確定要清空「:file」嗎?」→ 按下後只清空內容、檔案保留,成功訊息為「日誌檔案「:file」內容已清空」。清空後系統會通知寫入該檔的服務重新開啟檔案,避免服務繼續寫入舊位置造成內容空洞
  • 輪替檔(有 .1/.2.gz 等後綴):確認視窗顯示「確定要刪除日誌檔案「:file」嗎?」→ 真正刪除該檔,成功訊息為「日誌檔案「:file」已刪除」

⚠️ 操作日誌的現役檔(webadmin.log)不可刪除或清空。按下去會顯示「操作日誌現役檔不可刪除」——這是保護最近的稽核記錄,避免有人清掉自己的足跡。要縮小它的體積,請改用下面的「設定」調整輪替參數,或等它自然輪替後再刪除舊的輪替檔。

失敗時會明確告知原因,不會只說「失敗」:

  • 「刪除日誌檔案失敗」:找不到檔案或檔名不符規則
  • 「刪除日誌檔案失敗:檔案無法刪除(權限或檔案屬性限制)」:檔案被設為不可刪除,或掛載為唯讀
  • 「清空日誌檔案失敗:檔案無法寫入(權限或檔案屬性限制)」:同上,但發生在清空活檔時

每次刪除或清空都會寫入操作日誌(記錄為 DELETE 檔名 或 CLEAR 檔名),可在本頁的「操作日誌」項目查到。

設定頁籤:輪替設定

這一頁的四個日誌檔共用一組輪替設定(因為它們同屬一個輪替群組)。設定項目:

  • 單檔大小上限:每個日誌檔的大小上限(MB),超過就提前輪替。可填 1–200,出廠預設 50 MB。用途是防止某段時間大量寫入把單一檔案撐爆、拖慢查詢
  • 記錄週期:每週(預設)或每天。週期到了就結算,即使沒達到大小上限也會輪替
  • 保留天數/保留週數:保留幾份舊日誌(依上面選的週期決定單位)。可填 1–400,出廠預設保留 12 週(這一頁比其他日誌頁保留更久,因為稽核記錄通常要留比較長的時間)
  • 壓縮 rotate 檔:預設開啟。舊日誌以 gzip 壓縮成 .gz,節省磁碟空間

按「儲存設定」寫入,成功顯示「logrotate 設定已儲存」,失敗顯示「logrotate 設定儲存失敗」。設定不會立即套用——輪替是由系統的排程在週期到點時執行,屆時才會依新設定處理。

空間使用頁籤

列出這一頁相關的日誌檔(含輪替檔與壓縮檔),依時間新到舊排序,欄位為「檔案名稱/最後修改/空間占用」,最下方顯示「總計(N 個檔案)」。沒有檔案時顯示「目前沒有日誌檔。」;讀取失敗時顯示「讀取失敗」(此時表格為空,不是真的沒有檔案)。

這個頁籤的用途是判斷「是不是某支日誌把磁碟吃滿了」。若發現 php8.4-fpm.log 或 error.log 異常肥大,通常代表有程式在持續報錯,請直接切到「記錄」頁籤看內容。

常見情境與判讀

  • 「這條設定是誰改的?」:在「操作日誌」項目搜尋設定頁面的關鍵字(例如 SMTP、SAVE),訊息中的 [帳號@IP] 就是操作者
  • 「後台忽然白畫面/500」:切到「Web界面錯誤日誌」看 error.log,再到「Web核心日誌」看 php8.4-fpm.log;兩邊都要看,因為「Web 伺服器擋下來」與「PHP 執行失敗」是不同的層
  • 「有人一直嘗試登入」:在操作日誌搜尋 auth/login;若同一來源 IP 反覆出現,請搭配(系統日誌 / 阻斷記錄)確認是否已被自動防禦封鎖
  • 「硬碟空間被日誌吃光」:看「空間使用」頁籤確認哪一支最大 → 調整「設定」的單檔上限與保留份數 → 刪除不需要的輪替檔(現役操作日誌不能刪)
  • 「搜尋兩個關鍵字卻找不到」:確認有沒有把 , 與 + 混用;混用會整串當成一個字串,請只用其中一種

注意事項

  • 日誌內容是唯讀的歷史紀錄,這一頁不會修改任何系統設定(唯一的例外是「設定」頁籤的輪替參數)
  • 這一頁的「設定」儲存動作本身也會寫入操作日誌(SAVE …),可自我驗證稽核是否正常運作
  • 操作日誌的現役檔受保護,這是刻意的防護,不是故障
  • 排序只反轉「讀取到的行序」,並非依時間欄位重新排序;若日誌檔曾被打亂(例如手動合併過),排序結果可能不正確
  • 日誌輪替後舊檔名會變成 .1、.2.gz;.gz 只有在「壓縮 rotate 檔」開啟時才會產生
  • 需要跨頁面追查同一件事時,可搭配(系統日誌 / 主機日誌)與(系統日誌 / 連線記錄)