• このエントリーをはてなブックマークに追加


ss-1378149417

はじめに

複数のアプリケーション,複数のワーキングツリーを行ったり来たりする日が続いていますが,その都度,簡易デバッグ用に tail -F するログファイルを切り換えるのは非常にメンドウです.なので,対象となりうるファイルすべてを引数に渡すようなことをこれまでしてきましたが,ここ最近は,マシンの再起動等でコマンドを打ちなおしたり履歴から探したりすることすらメンドウになってきました.

そこで,対象となるファイル群を予め設定ファイルに書いておき,それを指定して実行するだけで先を実現できる,そんなスクリプト(bash + perl)を書いてみました.冒頭のスクリーンショットみたいに実行できます.

まぁ TOML を使ってみたかっただけ,ということもありますが...

セットアップ

% git clone https://github.com/issm/imtail.git /path/to/work/imtail
% cd /path/to/imtail
% git submodule update --init

そして,

% ./bin/imtail --help

としてドキュメント的なものが表示されれば,動作するかと思います.

設定ファイル

設定を TOML で記述します.

files には,tail -F したいファイル(群)を array で指定します:

files = [
  "/Users/issm/work/sitewiki/log/access_log",
  "/Users/issm/work/sitewiki/log/error_log",
  "/Users/issm/work/nicograph/log/access_log",
  "/Users/issm/work/nicograph/log/error_log",
]

冒頭のスクリーンショットがこの設定の結果です.

また,ssh を指定することで,指定したリモート先の環境に対して tail -F できます:

ssh = "issm@localhost"
files = [
  "/Users/issm/work/sitewiki/log/access_log",
  "/Users/issm/work/sitewiki/log/error_log",
  "/Users/issm/work/sitewiki/log/error_log",
  "/Users/issm/work/nicograph/log/access_log",
  "/Users/issm/work/nicograph/log/error_log",
]

この場合,次のような感じになります:

ss-1378149890

TOML 関連のリンク

TOML やそのための CPAN モジュールについては,次を参考にしています:

おわりに

以上,imtail という,指定したファイルに記述されているファイル群を tail -F するだけのスクリプトを書いてみたお話でした.

そのスクリプトを書くにあたり,TOML にほんの少しだけ触れてみましたが,非常にシンプルなルールながら,それなりのデータ構造を作れそうな気がします.それをサポートする CPAN モジュールも簡潔なので,人間による可読性・記述容易性とプログラム(ここでは Perl しか触れてませんが)からの扱いやすさが,けっこうなレベルで両立できているんでないかな,とか思ってます.ただ,設定ファイルくらいしか応用先が浮かばない頭しか持ち合わせていないので,どんな使われ方がされるかなど,もう少し情報を集めることにします.