Google Analytics

2009-07-17

Perlで標準出力と標準エラー出力をファイルに記録しつつ出力する

必要になったので調べていたのですが、himazu blogさんの、STDOUTとSTDERRをファイルにも出力するようにする では、解決していないようなので自分で考えてみました。

これにより、本文中のprint文には一切触れずに、STDOUT(標準出力)とSTDERR(標準エラー出力)をこっそりロギングする仕組みを追加でき、STDERRに出るwarningも捕捉できるので、とても便利だと思います。

この機能の実現に必要な、ファイルハンドルを多重化するしくみは、CPANモジュールで、IO::TeeFile::Teeが見つかったのですが、どうやら、File::Teeが簡単に使えそうです。

ひとつ残念なところは、File::TeeはWindowsに対応していない点です。

せっかく前処理部分を書けるので、無駄にタイムスタンプ機能などを追加してみました。

記録例(output.log)

0 コメント:

コメントを投稿