1. 開き方
- メニューバーの RetainProcess のアイコンをクリックし、左の一覧で構成を選ぶ。
- Logs タブのツールバーの右端にある Open in Terminal を押す。
- ターミナルの新しいウィンドウが開き、
current.logの末尾が表示される。下端に操作の案内(q quit · F follow (Ctrl-C to stop) · / search · & filter)が出る。
ボタンが押せないのは、ログファイルがまだ無いとき(構成の Log to file がオフ、またはまだ 1 行も書いていない)です。
2. 起動の仕組み
- RetainProcess は、一時的な
.commandファイル($TMPDIR/RetainProcess/の下、権限 0700)を作り、macOS のopenで開きます。.commandは、それを開くよう設定されたアプリ(通常は ターミナル.app)の新しいウィンドウで実行されます。 - ファイルは実行の直後に自分自身を消します。
- AppleScript(Apple Events)は使わないので、「オートメーション」の許可を求められることはありません。
- 動いているコマンドには影響しません。less はログファイルを読むだけです。
実行されるスクリプトは次のとおりです(<id> は構成の id)。
#!/bin/sh
rm -f -- "$0"
cd -- ~/Library/Logs/RetainProcess/<id> || exit 1
less --follow-name '-Ps q quit · F follow (Ctrl-C to stop) · / search · & filter ' +G -- current.log
exec "${SHELL:-/bin/zsh}" -l
| 部分 | 意味 |
|---|---|
cd -- …/<id> | その構成のログのフォルダに移る。抜けた後のシェルもここで始まる |
--follow-name | 追従(F)中にログが世代交代しても、ファイル名 current.log で追い直す(新しい current.log を読み続ける) |
-Ps … | 下端のプロンプトに操作の案内を出す |
+G | 開いたら末尾へ移動する(最新の行から読める) |
exec "$SHELL" -l | less を q で閉じた後、同じフォルダでいつものログインシェル(無ければ zsh)を続ける |
追従(F)から始めない理由: less +F で開くと、追従中は q が効かず抜けられないと迷いやすいためです。末尾を表示した通常の状態で開き、追従したいときだけ F を押します。
iTerm2 など別のターミナルで開きたいとき: Finder で適当な .command ファイルを選び、「情報を見る」→「このアプリケーションで開く」でアプリを選んで「すべてを変更」を押します。以後 RetainProcess もそのアプリで開きます。
3. ログファイルの場所と書式
~/Library/Logs/RetainProcess/<id>/ current.log # いま書いているファイル current.log.1 # 1 つ前の世代(数字が大きいほど古い) current.log.2 current.log.3 pending-archive/ # 退避先へ移す前の、あふれた分
- ファイルの大きさが構成の上限(既定 5 MB)を超えると、
current.log→current.log.1→ … と世代交代します。残す世代数は既定 3。 - 構成の New log file each run(既定オン)なら、Run のたびに新しい
current.logで始まります。 - フォルダの場所は
retain-process path <構成>でも分かります。
1 行の書式(タイムスタンプ、ストリーム、本文):
2026-10-12T10:00:00.123+09:00 out server listening on :8080 2026-10-12T10:00:00.456+09:00 err warn: deprecated option 2026-10-12T10:00:01.000+09:00 sys exited code=0
- ストリームは
out(標準出力)・err(標準エラー)・sys(RetainProcess が書いた起動・停止・終了コードなど)。 - Run の始まりには区切りの行
──────── run 3 · 2026-10-12 10:00:00 ────────が入ります。 - 色(ANSI のエスケープ)はファイルに保存する前に取り除いています。less では色は付きません。
4. less の操作方法
less は、ファイルを 1 画面ずつ読むためのコマンドです。キーを押すとすぐ効きます(/ や & のように下端に入力するものは Enter で確定)。分からなくなったら q で抜ければ元に戻ります。
終了・ヘルプ
| キー | 動作 |
|---|---|
| q | less を終了する(その後はシェルが続く) |
| h | less のヘルプ(全キーの一覧)。q でヘルプを閉じる |
| = または Ctrl+G | ファイル名・今いる行・全体の何 % かを表示する |
移動
| キー | 動作 |
|---|---|
| j / ↓ / Enter | 1 行下へ |
| k / ↑ | 1 行上へ |
| Space / f | 1 画面下へ |
| b | 1 画面上へ |
| d / u | 半画面 下へ / 上へ |
| g / < | 先頭へ |
| G / > | 末尾へ(開いた直後はここ) |
| 数字 + g(例 120g) | その行番号へ |
| 数字 + p(例 50p) | ファイルのその % の位置へ |
| → / ← | 横へ半画面ずつ(長い行を折り返さない表示のとき。下の -S) |
追従(新しい行を待って表示し続ける)
| キー | 動作 |
|---|---|
| F | 追従を始める(tail -f のように、書き足される行を表示し続ける。世代交代しても新しい current.log を追う) |
| Ctrl+C | 追従を止めて、通常の操作に戻る。追従中は q が効かないので、まずこれ |
検索
| キー | 動作 |
|---|---|
| /文字列 Enter | 下(新しい方)へ向かって検索し、一致を強調する。正規表現が使える(例 /timeout|refused) |
| ?文字列 Enter | 上(古い方)へ向かって検索する。末尾から開くので、過去を探すときはこちらが便利 |
| n / N | 次の一致 / 前の一致へ |
| / の直後に ! | 一致しない行を検索する(例 /!GET) |
| Esc u | 強調の表示を消す / 戻す |
| -i | 大文字小文字を区別しない検索に切り替える(もう一度で戻す)。切り替えた後でも、パターンに大文字を含めるとその検索は区別する |
絞り込み(一致する行だけを表示)
| キー | 動作 |
|---|---|
| &文字列 Enter | 一致する行だけを表示する(例 & err で標準エラーの行だけ) |
| & の直後に ! | 一致しない行だけを表示する(例 &!GET /health でヘルスチェックの行を隠す) |
| & を続けて使う | 条件を重ねる(すべてに一致する行だけになる)。絞り込み中は下端のプロンプトの先頭に & が出る |
| & だけで Enter | 絞り込みを解除して全行に戻す |
表示の切り替え
- に続けて文字を押すと、less の中で設定を切り替えられます(もう一度押すと元に戻る)。
| キー | 動作 |
|---|---|
| -S | 長い行を折り返さない(はみ出した分は → で見る)。JSON のログなどに |
| -N | 行番号を表示する |
| -i | 検索で大文字小文字を区別しない |
| r / Ctrl+L | 画面を描き直す(表示が乱れたとき) |
印と別のファイル
| キー | 動作 |
|---|---|
| m + 英字(例 ma) | 今の位置に印を付ける |
| ' + 英字(例 'a) | 印の位置へ戻る |
| :e ファイル名 Enter | 別のファイルを開く(例 :e current.log.1 で 1 つ前の世代) |
| :n / :p | 開いた複数のファイルの次 / 前へ |
v(エディタで開く)は使わないでください。ログファイルを書き換えることになります。
5. よく使う手順
| やりたいこと | 操作 |
|---|---|
| エラーだけを見る | & err Enter(前後に空白を入れると、本文の「error」などに当たらない)。戻すのは & Enter |
| 直近のエラーを探す | ?error|panic|exception Enter、さらに前は n |
| これから出る行を見張る | F。止めるのは Ctrl+C |
| エラーだけを見張る | & err Enter のあと F(絞り込みは追従中も効く) |
| 今回の Run の始まりへ | ?──── run Enter |
| 前の世代を読む | :e current.log.1 Enter |
6. q で抜けた後のシェル
less を q で閉じると、同じウィンドウでいつものシェル(zsh など)が、ログのフォルダから始まります。そのまま次のようなコマンドが使えます。
# ファイルの一覧と大きさ ls -lh # すべての世代から、エラーの行を行番号付きで探す grep -n ' err ' current.log* # 文字列を含む行の前後 3 行も表示 grep -n -C 3 'timeout' current.log # 世代ごとにエラーの行を数える grep -c ' err ' current.log* # 末尾を追いかける(世代交代しても追う。止めるのは Ctrl-C) tail -F current.log # もう一度 less で開く(末尾から) less +G current.log # Finder でこのフォルダを開く open . # ウィンドウを閉じる exit
ログのフォルダから別の構成のログを見るなら、less +G "$(retain-process path Ollama)" のように CLI でパスを取れます(コマンド一覧)。
7. うまくいかないとき
| 症状 | 対処 |
|---|---|
| Open in Terminal が押せない | まだログファイルがありません。構成の Log to file をオンにして Run してください |
| q を押しても抜けられない | 追従中(下端に Waiting for data...)です。Ctrl+C を押してから q |
| 新しい行が出てこない | 通常の表示は開いた時点の内容です。F で追従するか、G で末尾を読み直してください |
| 色が付かない | ファイルには色の情報を保存していません(ポップアップの Logs タブでは色付きで表示します) |
| 文字化けする | UTF-8 でない出力は、保存の時点で置換文字(�)になっています |
exit してもウィンドウが残る | ターミナル.app の設定 → プロファイル → シェル → 「シェルの終了時」を「ウィンドウを閉じる」にしてください |
| 別のアプリ(Xcode など)で開いてしまう | .command を開くアプリが変わっています。2 章の手順でターミナルに戻してください |