コマンドの出力を調整する
あるコマンド、例えば my-script arg1 arg2
を実行すると
> my-script arg1 arg2 start step1 cp lib -> hoge ‘lib’ -> ‘hoge’ ‘lib/File’ -> ‘hoge/File’ ‘lib/File/Upload’ -> ‘hoge/File/Upload’ ‘lib/File/Upload/AtomicChange.pm’ -> ‘hoge/File/Upload/AtomicChange.pm’ ‘lib/File/Upload/Web’ -> ‘hoge/File/Upload/Web’ ‘lib/File/Upload/Web/Dispatcher.pm’ -> ‘hoge/File/Upload/Web/Dispatcher.pm’ ‘lib/File/Upload/Web/View.pm’ -> ‘hoge/File/Upload/Web/View.pm’ ‘lib/File/Upload/Web/ViewFunctions.pm’ -> ‘hoge/File/Upload/Web/ViewFunctions.pm’ ‘lib/File/Upload/Web.pm’ -> ‘hoge/File/Upload/Web.pm’ ‘lib/File/Upload.pm’ -> ‘hoge/File/Upload.pm’ end step 1 start step 2 ... ... end step 2
のような出力がでるとする。
このとき
- 画面への出力は特定の行だけで十分。上記の例だと
/start step|end step/
の行。 - ただしすべての出力は後々のためファイルに保存しておきたい。
- ログ一行一行に時間が入っていた方が何かと便利。
を実現したくなったので custom-output というスクリプトを作ってみた。
これをかましてコマンドを実行すると、画面への出力は
> custom-output --append-time --logfile my.log --grep 'start step|end step' -- my-script arg1 arg2 [2014-07-13 01:51:05] start step1 [2014-07-13 01:51:05] end step 1 [2014-07-13 01:51:05] start step 2 [2014-07-13 01:51:05] end step 2
となる一方、my.log には
> cat my.log [2014-07-13 01:51:05] out: start step1 [2014-07-13 01:51:05] out: cp lib -> hoge [2014-07-13 01:51:05] err: ‘lib’ -> ‘hoge’ [2014-07-13 01:51:05] err: ‘lib/File’ -> ‘hoge/File’ [2014-07-13 01:51:05] err: ‘lib/File/Upload’ -> ‘hoge/File/Upload’ [2014-07-13 01:51:05] err: ‘lib/File/Upload/AtomicChange.pm’ -> ‘hoge/File/Upload/AtomicChange.pm’ [2014-07-13 01:51:05] err: ‘lib/File/Upload/Web’ -> ‘hoge/File/Upload/Web’ [2014-07-13 01:51:05] err: ‘lib/File/Upload/Web/Dispatcher.pm’ -> ‘hoge/File/Upload/Web/Dispatcher.pm’ [2014-07-13 01:51:05] err: ‘lib/File/Upload/Web/View.pm’ -> ‘hoge/File/Upload/Web/View.pm’ [2014-07-13 01:51:05] err: ‘lib/File/Upload/Web/ViewFunctions.pm’ -> ‘hoge/File/Upload/Web/ViewFunctions.pm’ [2014-07-13 01:51:05] err: ‘lib/File/Upload/Web.pm’ -> ‘hoge/File/Upload/Web.pm’ [2014-07-13 01:51:05] err: ‘lib/File/Upload.pm’ -> ‘hoge/File/Upload.pm’ [2014-07-13 01:51:05] out: end step 1 [2014-07-13 01:51:05] out: start step 2 [2014-07-13 01:51:05] out: ... [2014-07-13 01:51:05] out: ... [2014-07-13 01:51:05] out: end step 2
のように全部保存される。
既存のコマンドには手を加えないで、出力を調整できるので便利だと思う。