「kazeburo さんの Proclet をもちいた劣化 foreman の実装 - tokuhirom’s blog.」に
STDOUT にタグつけたりはしてないけど、とりあえず起動はできる。STDOUT にタグつけるのは pipe で処理かまさないとだめなのでちと面倒
と書かれていたので、その面倒な事をProclet側で実装してみた。
https://metacpan.org/release/KAZEBURO/Proclet-0.09
プロセスの数だけpipeを作って、各プロセスでSTDERRとSTDOUTをpipeに結びつけ、ログ処理専用workerがそれをselectしつつ読み出すという設計になっています
使い方
my $proclet = Proclet->new(
color => 1
);
$proclet->service(
code => sub {
my $loader = Plack::Loader->load(
'Starman',
port => 5432,
max_workers => 4,
);
$loader->run($app);
},
tag => 'web'
);
$proclet->service(
code => sub {
exec('/usr/bin/memcached','-vv','-p','11211');
},
tag => 'memcached'
);
$proclet->run;
こんな感じに書いて起動すると↓のようになります
これで一歩foremanに近づいたような気がします
色がつくオプションはデフォルト無効になっています。