Skip to content

日誌與診斷 ​

AppPorts 內建日誌系統,用於記錄應用程式執行期間的關鍵事件、遷移操作、系統資訊和錯誤詳情。遇到問題時,可匯出診斷包並提交至專案 Issues,以協助排查。

日誌記錄內容 ​

啟動工作階段資訊 ​

每次啟動 AppPorts 時,日誌會記錄以下資訊:

項目說明
工作階段 ID本次執行的唯一識別碼(8 位 UUID 字首)
行程 ID系統行程識別碼
Bundle ID應用程式識別碼
應用程式語言目前選擇的語言代碼
系統地區系統地區設定識別碼
時區目前時區識別碼
首選語言清單系統首選語言順序

系統診斷資訊 ​

項目說明
應用程式版本版本號與建置編號
macOS 版本系統版本及產品名稱(如 "macOS Sequoia 15.x")
裝置型號型號及易讀的產品名稱(如 "MacBook Pro (14-inch, M3 Pro, 2023)")
處理器資訊品牌字串、核心數、使用中的核心數
實體記憶體記憶體總量

外接儲存裝置資訊 ​

選擇外接儲存裝置卷宗時,日誌會記錄以下資訊:

項目說明
卷宗名稱儲存卷宗名稱
總容量 / 可用空間儲存空間資訊
檔案系統格式如 APFS、HFS+、exFAT 等
介面協定USB、Thunderbolt、NVMe/SATA
裝置速度傳輸速率資訊
區塊大小儲存區塊大小
卷宗 UUID儲存卷宗唯一識別碼

遷移操作事件 ​

每次遷移操作都會產生唯一的操作 ID(如 data-migrate-ABCD1234),並記錄:

  • 操作開始與結束。
  • 每個步驟的進度,包括複製、刪除原始目錄、建立符號連結和回復。
  • 步驟前後的路徑狀態快照,包括存在性、權限、大小、符號連結目標和不可變標誌。
  • 殘留遷移資料偵測與自動恢復。
  • 檔案複製進度、錯誤與重試。

遷移效能報告 ​

項目說明
應用程式名稱遷移的應用程式名
資料大小遷移資料量
耗時遷移持續時間(秒)
傳輸速度傳輸速率(MB/s)
來源路徑 / 目標路徑遷移起止路徑

錯誤詳情 ​

錯誤日誌會包含結構化資訊:

欄位說明
錯誤描述人類可讀的錯誤說明
錯誤類型 / 領域 / 代碼NSError 結構化資訊
錯誤碼AppPorts 內部錯誤碼(見下表)
失敗原因詳細失敗原因
恢復建議系統提供的恢復建議
檔案路徑涉及的檔案路徑
關聯路徑操作涉及的相關應用程式路徑(relatedURLs)
底層錯誤巢狀錯誤遞迴記錄

錯誤碼 ​

錯誤碼意義
BACKUP-SIGNATURE-FAILED簽名備份失敗
APP-MOVE-DESTINATION-CONFLICT應用程式遷移目標已存在,且不能確認可安全替換
APP-RESTORE-LOCAL-CONFLICT遷回本機時發現無法自動覆蓋的本機同名項目
DATA-MIGRATE-DESTINATION-CONFLICT資料目錄遷移目標已存在,且 metadata 未完全相符
RESIGN-FAILED重簽名失敗(應用程式可能無法通過 macOS 簽名驗證)
DATA-RESIGN-FAILED資料目錄遷移後自動重簽名失敗
RESIGN-REFUSED-SANDBOXED拒絕對沙盒應用程式重簽名
RESTORE-SIGNATURE-IDENTITY-UNAVAILABLE原始簽名憑證不在本機,拒絕恢復
CONTAINER-MOUNT-*掛載遷移各階段失敗,如 CONTAINER-MOUNT-EXTERNAL-NOT-APFS、CONTAINER-MOUNT-SWITCH-FAILED
CONTAINER-RESTORE-*掛載遷移目錄還原各階段失敗
DATA-BACKUP-SIGNATURE-FAILED資料目錄遷移前簽名備份失敗(後續恢復簽名將無法使用原始身分)

資料目錄操作脈絡 ​

資料目錄操作(遷移、恢復、正規化、重新連結)的日誌會自動包含相關應用程式的背景資訊:

欄位說明
app_name關聯應用程式名稱
app_status應用程式狀態(已連結、本地等)
app_is_resigned應用程式是否已被重簽名
app_bundle_id應用程式的 Bundle ID(基於真實路徑讀取)
app_real_path應用程式的真實外部路徑

操作摘要 ​

每個遷移操作產生 OperationSummaryRecord 記錄,保留最近 100 條:

欄位說明
operationID操作唯一識別碼
category操作類別(app_move、data-migrate、file-copy 等)
result結果(success、failed、rolled_back、success_with_warning)
errorCode錯誤碼(如有)
startedAt / endedAt起止時間
durationMs耗時(毫秒)

日誌設定 ​

儲存位置 ​

預設日誌路徑:

text
~/Library/Application Support/AppPorts/AppPorts_Log.txt

可透過以下方式自訂日誌位置:

  • 選單欄 →「日誌」→「設定日誌位置...」。
  • 設定 → 日誌設定 → 自訂路徑。

日誌格式 ​

text
[2026-05-08 09:30:00] [INFO] [session:a1b2c3d4] [pid:12345] 应用启动
[2026-05-08 09:30:01] [DIAG] [session:a1b2c3d4] [pid:12345]   app_version: 1.6.1 (123)
[2026-05-08 09:30:05] [PERF] [session:a1b2c3d4] [pid:12345]   迁移完成: 2.3 GB, 45.2 MB/s, 52.1s

日誌層級 ​

層級說明
INFO一般資訊
ERROR錯誤資訊(含結構化錯誤詳情)
DIAG系統診斷資訊
DISK外接儲存裝置卷宗資訊
PERF遷移效能報告
TRACE底層路徑狀態與資料夾監控
DEBUG除錯資訊(大小計算、巢狀目錄檢查)
WARN警告(殘留遷移資料、恢復模式)

日誌輪替 ​

  • 預設最大大小:2 MB(可設定為 1 MB、5 MB、10 MB、50 MB 或 100 MB)。
  • 超出限制時自動截斷:丟棄較舊的一半行,保留較新的一半。

匯出診斷包 ​

當遇到問題需要回報時,請匯出診斷包並附帶在 Issue 中。

匯出方式 ​

方式一:選單欄

  1. 按一下選單欄 → 日誌 → 匯出診斷包。
  2. 選擇儲存位置。
  3. 系統會自動產生 .zip 檔案,並在 Finder 中開啟。

方式二:設定頁面

  1. 開啟 AppPorts → 右上角設定。
  2. 找到「日誌設定」區域。
  3. 按一下「匯出診斷包」按鈕。
  4. 選擇儲存位置。

診斷包內容 ​

匯出的 AppPorts-Diagnostic-<日期时间>.zip 包含:

檔案格式說明
diagnostic-summary.jsonJSON後設資料(工作階段 ID、版本、區域、時區等)
diagnostic-summary.txt純文字人類可讀的診斷摘要
recent-operations.jsonJSON最近 100 條操作記錄
recent-failures.jsonJSON最近 20 條失敗/警告操作
AppPorts_Log.share-safe.txt純文字完整日誌(已隱去敏感資訊)

隱私保護 ​

診斷包中的日誌檔案已隱去敏感資訊:

原始內容替換為
使用者主目錄路徑(如 /Users/john)/Users/<redacted-user>
外接儲存裝置卷宗名稱(如 /Volumes/MyDrive)/Volumes/<redacted-volume>
$HOME 完整路徑~

提交 Issue ​

取得診斷包後,請按以下步驟提交:

  1. 開啟專案 Issues 頁面。
  2. 按一下「New Issue」,選擇 Bug 回報範本。
  3. 描述問題現象和重現步驟。
  4. 將診斷包 .zip 檔案拖移至附件區域上傳。
  5. 提交 Issue。

提高回報效率

提交 Issue 時附帶診斷包,可顯著加快問題定位速度。診斷包包含完整的操作歷史、錯誤詳情和系統環境資訊,開發者無需反覆溝通即可重現和分析問題。

最近更新