# tail でログに色を付ける方法
> tail でログに色を付ける方法
- Canonical: https://c-a-p-engineer.github.io/tail-colorize-log/
- Published: 2026-01-23T18:30:00.000Z
- Modified: 2026-01-23T18:30:00.000Z
- Categories: Linux
- Tags: Linux, Bash

# 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 で色を付ける（リアルタイム監視）

### 基本：追記されるログを色付きで見る

```bash
tail -f app.log | sed -E 's/(ERROR)/\x1b[31m\1\x1b[0m/g'
```

* 新しく追加された行だけが流れる
* 監視用途の基本形

---

### 実務定番：ログレベルを色分けして監視

```bash
tail -f app.log | sed -E \
  -e 's/(FATAL)/\x1b[1;31m\1\x1b[0m/g' \
  -e 's/(ERROR)/\x1b[31m\1\x1b[0m/g' \
  -e 's/(WARN|WARNING)/\x1b[33m\1\x1b[0m/g' \
  -e 's/(INFO)/\x1b[32m\1\x1b[0m/g' \
  -e 's/(DEBUG)/\x1b[36m\1\x1b[0m/g' \
  -e 's/(TRACE)/\x1b[90m\1\x1b[0m/g'
```

これだけで、

* エラーが即視認できる
* INFO に埋もれない
* 行が欠ける心配もない

という **安全なログ監視**ができます。

---

## よくある NG パターン

### grep を重ねる例（非推奨）

```bash
tail -f app.log | grep ERROR | grep WARN
```

* マッチしない行は消える
* 「ログが出ていない」のか「消えている」のか分からなくなる

👉 **監視用途では避けるべき**

---

## 使い回すなら関数化する（おすすめ）

毎回長いコマンドを書くのが面倒な場合は、
シェルに関数として登録すると楽です。

```bash
logcolor() {
   sed -E \
   -e 's/(FATAL)/\x1b[1;31m\1\x1b[0m/g' \
   -e 's/(ERROR)/\x1b[31m\1\x1b[0m/g' \
   -e 's/(WARN|WARNING)/\x1b[33m\1\x1b[0m/g' \
   -e 's/(INFO)/\x1b[32m\1\x1b[0m/g' \
   -e 's/(DEBUG)/\x1b[36m\1\x1b[0m/g' \
   -e 's/(TRACE)/\x1b[90m\1\x1b[0m/g'
}
```

使い方：

```bash
tail -f app.log | logcolor
```

---

## まとめ

* ログの色付けは **「行を消さない」ことが最重要**
* `sed` を使えば **安全に装飾だけ**できる
* `cat` も同様にも使える
* `tail -f` はリアルタイム監視向け
* 同じ色付けルールを両方で使い回せる

色付けはあくまで補助ですが、
**正しく使うとログの読みやすさと安心感が一段上がります。**
