Logs in Terminal

ターミナルでログを読む

Logs タブの Open in Terminal は、ログファイルをターミナルの less で開きます。ポップアップに出るのは直近 1,000 行だけですが、ターミナルならファイル全体を検索・絞り込み・追従でき、抜けた後は grep などのコマンドもそのまま使えます。

1. 開き方

  1. メニューバーの RetainProcess のアイコンをクリックし、左の一覧で構成を選ぶ。
  2. Logs タブのツールバーの右端にある Open in Terminal を押す。
  3. ターミナルの新しいウィンドウが開き、current.log の末尾が表示される。下端に操作の案内(q quit · F follow (Ctrl-C to stop) · / search · & filter)が出る。

ボタンが押せないのは、ログファイルがまだ無いとき(構成の Log to file がオフ、またはまだ 1 行も書いていない)です。

2. 起動の仕組み

実行されるスクリプトは次のとおりです(<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" -lless を 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/     # 退避先へ移す前の、あふれた分

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

4. less の操作方法

less は、ファイルを 1 画面ずつ読むためのコマンドです。キーを押すとすぐ効きます(/ や & のように下端に入力するものは Enter で確定)。分からなくなったら q で抜ければ元に戻ります。

終了・ヘルプ

キー動作
qless を終了する(その後はシェルが続く)
hless のヘルプ(全キーの一覧)。q でヘルプを閉じる
= または Ctrl+Gファイル名・今いる行・全体の何 % かを表示する

移動

キー動作
j / ↓ / Enter1 行下へ
k / ↑1 行上へ
Space / f1 画面下へ
b1 画面上へ
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 章の手順でターミナルに戻してください