Copy & Paste Engineer

tail でログに色を付ける方法

tail ログに色を付ける方法

── 行を消さない、安全なログ可視化テクニック

ログを見ていると、

という場面は日常的にあります。

よくある解決策として grep --color を使う例が紹介されますが、grep を重ねる方法は行が消えるリスクがあり、ログ監視や調査では事故につながりかねません。

この記事では、

sed + ANSIエスケープ による色付け方法を紹介します。


方針:抽出しない、表示だけを装飾する

重要なのはこの一点です。

ログの内容は変えず、見た目だけを変える

以降の例はすべて 行を消さない安全な構成です。


色付けの仕組み(最低限)

ターミナルは ANSI エスケープシーケンスで色を制御します。

よく使う色コード:

コード
31
32
33
水色 36
太字赤 1;31

このコードを sed で文字列に差し込みます。

tail で色を付ける(リアルタイム監視)

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

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

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

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'

これだけで、

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


よくある NG パターン

grep を重ねる例(非推奨)

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

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


使い回すなら関数化する(おすすめ)

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

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'
}

使い方:

tail -f app.log | logcolor

まとめ

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