バックグラウンドで実行する必要があるphpプログラムを管理するためにsupervisordを使用しています。そのプログラムは、イベントをファイルに記録しますworker_log
。supervisord.conf
私が使用しているでこれを構成するのは簡単です:
stderr_logfile=/var/log/supervisord/worker_log;
ただし、ログに書き込まれるイベント自体にタイムスタンプを付けたいと思います。私はphpプログラムを制御できないため、ログを装飾することはできません。私は、上記のロギング構成をコメントアウトし、スーパーバイザーのコマンド構成でコマンドラインパイプを介してプログラムを装飾することだと考えました。
command=php /www/myapp/worker.php 2>&1 | sed "s/^/`date` /" > /var/log/supervisord/worker_log;
このコマンドを手動で実行すると、問題なく動作するようです。ただし、supervisord はどういうわけか適切に機能するのを妨げているようで、その方法がわかりません。worker.php
正常に実行されますが、この構成ではレポートが抑制されます。そのため、もちろんタイムスタンプは追加されません。
ワーカーの出力にタイムスタンプを付けるという目標を達成する方法についてのガイダンスを提供するために、これについて十分に知っている人はいますか?