ログと診断
AppPorts には組み込みのログシステムがあり、アプリ実行中の重要なイベント、移行操作、システム情報、エラー詳細を記録します。問題が発生した場合は、診断パッケージをエクスポートしてプロジェクトのIssuesに提出し、トラブルシューティングにご活用ください。
ログに記録される内容
起動セッション情報
アプリの起動時に毎回以下の情報が記録されます:
| 項目 | 説明 |
|---|---|
| セッション ID | この実行の一意な識別子(8文字の UUID プレフィックス) |
| プロセス ID | システムプロセス識別子 |
| Bundle ID | アプリ識別子 |
| アプリ言語 | 現在選択されている言語コード |
| システムロケール | システムロケール識別子 |
| タイムゾーン | 現在のタイムゾーン識別子 |
| 優先言語リスト | システムの優先言語順序 |
システム診断情報
| 項目 | 説明 |
|---|---|
| アプリバージョン | バージョン番号とビルド番号 |
| macOS バージョン | システムバージョンとマーケティング名(例:「macOS Sequoia 15.x」) |
| デバイスモデル | モデルとフレンドリ名(例:「MacBook Pro(14インチ、M3 Pro、2023)」) |
| プロセッサ情報 | ブランド文字列、コア数、アクティブコア数 |
| 物理メモリ | 総メモリ |
外部ストレージ情報
外部ストレージボリュームを選択した際に記録されます:
| 項目 | 説明 |
|---|---|
| ボリューム名 | ストレージボリューム名 |
| 総容量 / 使用可能容量 | ストレージ容量情報 |
| ファイルシステムフォーマット | 例:APFS、HFS+、exFAT など |
| インターフェースプロトコル | USB、Thunderbolt、NVMe/SATA |
| デバイス速度 | 転送レート情報 |
| ブロックサイズ | ストレージブロックサイズ |
| ボリューム UUID | ストレージボリュームの一意な識別子 |
移行操作イベント
各移行操作には一意な操作 ID(例:data-migrate-ABCD1234)が生成され、以下が記録されます:
- 操作の開始と終了
- 各ステップの進捗(コピー、元ディレクトリ削除、シンボリックリンク作成、ロールバック)
- ステップ前後のパス状態スナップショット(存在、権限、サイズ、シンボリックリンクターゲット、イミュータブルフラグ)
- 残留移行データの検出と自動回復
- ファイルコピーの進捗、エラー、リトライ
移行パフォーマンスレポート
| 項目 | 説明 |
|---|---|
| アプリ名 | 移行されたアプリ名 |
| データサイズ | 移行されたデータ量 |
| 所要時間 | 移行時間(秒) |
| 転送速度 | 転送レート(MB/s) |
| ソースパス / 宛先パス | 移行の開始パスと終了パス |
エラー詳細
エラーログには構造化された情報が含まれます:
| フィールド | 説明 |
|---|---|
| エラー説明 | 人間が読める形式のエラー説明 |
| エラータイプ / ドメイン / コード | NSError 構造化情報 |
| 失敗理由 | 詳細な失敗理由 |
| 復元提案 | システムが提供する復元提案 |
| ファイルパス | 影響を受けたファイルパス |
| 下位エラー | 再帰的に記録されたネストされたエラー |
操作サマリー
各移行操作は 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] App started
[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] Migration complete: 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:メニューバー
- メニューバー → ログ → 診断パッケージをエクスポート をクリック
- 保存場所を選択
- システムが自動的に
.zipファイルを生成し、Finder で開きます
方法2:設定ページ
- AppPorts → 設定(右上隅)を開く
- 「ログ設定」セクションを見つける
- 「診断パッケージをエクスポート」ボタンをクリック
- 保存場所を選択
診断パッケージの内容
エクスポートされた AppPorts-Diagnostic-<datetime>.zip には以下が含まれます:
| ファイル | フォーマット | 説明 |
|---|---|---|
diagnostic-summary.json | JSON | メタデータ(セッション ID、バージョン、ロケール、タイムゾーンなど) |
diagnostic-summary.txt | プレーンテキスト | 人間が読める形式の診断サマリー |
recent-operations.json | JSON | 最新の100件の操作記録 |
recent-failures.json | JSON | 最新の20件の失敗/警告操作 |
AppPorts_Log.share-safe.txt | プレーンテキスト | 完全なログ(編集済み) |
プライバシー保護
診断パッケージ内のログファイルは編集されています:
| 元のコンテンツ | 置換後 |
|---|---|
ユーザーのホームディレクトリパス(例:/Users/john) | /Users/<redacted-user> |
外部ストレージボリューム名(例:/Volumes/MyDrive) | /Volumes/<redacted-volume> |
$HOME フルパス | ~ |
Issue の提出
診断パッケージを取得した後、以下の手順で提出してください:
- プロジェクトのIssuesページにアクセス
- 「New Issue」をクリックし、Bug report テンプレートを選択
- 問題と再現手順を記述
- 診断
.zipファイルを添付エリアにドラッグしてアップロード - Issue を提出
💡 フィードバック効率の向上
診断パッケージ付きで Issue を提出すると、問題解決を大幅に迅速化できます。診断パッケージには完全な操作履歴、エラー詳細、システム環境情報が含まれており、開発者が繰り返しのコミュニケーションなしに問題を再現・分析できます。
