2023/05/29

Goで標準出力をフィルタしてよしなに色を付けるツール書いた

タイトルの通り、Goで標準出力をフィルタしてよしなに色を付けるツール書きました。

irir

モチベーションは「 go test に色を付けるツールを作った #golang 」と同じです。

ある標準出力に対して、なんらかの文字列を含んでいたらその文字列に色を付けたり、行全体に色を付けたいという要求はよくあることだと思います。今回は、そうした小さな色付けルールをYAMLで記述してフィルタを適用する感じのツールにしました。

READMEにある通りですが、以下の様なログファイルがあったとして、

$ cat example.log
2023/05/19 23:56:54 [info] GET /some/resource 200 0.001
2023/05/19 23:56:55 [warn] GET /some/resource 200 0.001
2023/05/19 23:56:56 [error] GET /some/resource 200 0.001
2023/05/19 23:56:57 [info] GET /some/resource 200 0.001

こんな感じのYAMLファイルを用意しておきます。

$ cat ~/.config/irir/irir_rule.yaml
---
log:
- type: match
  match: [info]
  color: cyan
  target: word
- type: match
  match: [warn]
  color: yellow
  target: word
- type: match
  match: [error]
  color: bg_red
  target: line

んで、irir でフィルタした結果が以下の様に色付きになります。

$ cat example.log | irir log

文字列にマッチさせるところは正規表現も使えます。

詳しくは README をご覧ください。

ではでは。

サイト内検索