tail ログに色を付ける方法
── 行を消さない、安全なログ可視化テクニック
ログを見ていると、
- ERROR を赤くしたい
- WARN / INFO を色分けしたい
- 大量のログから重要な行を一瞬で見つけたい
という場面は日常的にあります。
よくある解決策として grep --color を使う例が紹介されますが、grep を重ねる方法は行が消えるリスクがあり、ログ監視や調査では事故につながりかねません。
この記事では、
- 行を一切削除せず
- tail / cat のどちらでも使える
- 実務で安心して使える
sed + ANSIエスケープ による色付け方法を紹介します。
方針:抽出しない、表示だけを装飾する
重要なのはこの一点です。
ログの内容は変えず、見た目だけを変える
- ❌ grep:マッチしない行を消す可能性がある
- ✅ sed:文字列を置換するだけ(行は必ず残る)
以降の例はすべて 行を消さない安全な構成です。
色付けの仕組み(最低限)
ターミナルは ANSI エスケープシーケンスで色を制御します。
- 色開始:
\x1b[<色コード>m - 色解除:
\x1b[0m
よく使う色コード:
| 色 | コード |
|---|---|
| 赤 | 31 |
| 緑 | 32 |
| 黄 | 33 |
| 水色 | 36 |
| 太字赤 | 1;31 |
このコードを sed で文字列に差し込みます。
tail で色を付ける(リアルタイム監視)
基本:追記されるログを色付きで見る
| |
- 新しく追加された行だけが流れる
- 監視用途の基本形
実務定番:ログレベルを色分けして監視
| |
これだけで、
- エラーが即視認できる
- INFO に埋もれない
- 行が欠ける心配もない
という 安全なログ監視ができます。
よくある NG パターン
grep を重ねる例(非推奨)
| |
- マッチしない行は消える
- 「ログが出ていない」のか「消えている」のか分からなくなる
👉 監視用途では避けるべき
使い回すなら関数化する(おすすめ)
毎回長いコマンドを書くのが面倒な場合は、
シェルに関数として登録すると楽です。
| |
使い方:
| |
まとめ
- ログの色付けは 「行を消さない」ことが最重要
sedを使えば 安全に装飾だけできるcatも同様にも使えるtail -fはリアルタイム監視向け- 同じ色付けルールを両方で使い回せる
色付けはあくまで補助ですが、
正しく使うとログの読みやすさと安心感が一段上がります。