tail.io - 標準入力をブラウザで tail -f できる htmlcat のクローンを Node.js + Socket.IO で作った
標準入力をブラウザで tail -f できる htmlcat というのを書いた - NaN days - subtech
この記事をみて便利そうだったのですが、Perl 詳しくなくて動かし方がよくわからなかったので、勉強がてらに Node.js + Socket.IO でクローンを作ってみました。npm モジュールとして登録してあるので、以下の方法でインストールできます。
$ npm install tail.io -g
コマンドラインツールなのでグローバルインストールしてください。これで tailio というコマンドが使えるようになります。
(追記) Socket.IO のデバッグログを標準で出力しないようにしました。また、--port オプションでポート番号を明示的に指定することもできるようにしてみました。既にインストールした人は npm update tail.io -g でアップデートしてみてください。--verbose オプションでデバッグログを出力することもできます。
本家と同じく --exec オプションに対応しているので、Mac で以下のコマンドを実行すると、サーバ起動と同時にブラウザが立ち上がり、そこのログを tail した結果が出力されます。
$ tail -f access.log | tailio --exec open info - socket.io started Server listening on port 10631 open http://0.0.0.0:10631
カラーコード周りはなんか上手く動いていませんが、用途としては間に合っているので気が向いたら直します。
参考記事
空きポートを探す emptyPort の実装は sugyan さんの記事 を参考に、標準入力 (ReadableStream) から1行ずつ読み込む LineReader の実装は koichik さんの記事を参考にさせてもらいました。