Używam superwizji do zarządzania programem php, który musi działać w tle. Ten program rejestruje zdarzenia w pliku worker_log
. Jest to dość proste, aby skonfigurować to w supervisord.conf
Używam:Logi z datowaniem programów zarządzanych przez supervisord
stderr_logfile=/var/log/supervisord/worker_log;
Jednakże chciałbym dla zdarzenia są zapisywane w dzienniku na timestamp siebie. Nie mam kontroli nad programem php, więc dekorowanie jego logu nie jest opcją. Pomyślałem, że to, co robię jest wykomentuj powyższą konfigurację rejestrowania i ozdobić program rurami wiersza polecenia w konfiguracji poleceń przełożonego:
command=php /www/myapp/worker.php 2>&1 | sed "s/^/`date` /" > /var/log/supervisord/worker_log;
Po uruchomieniu tej komendy ręcznie wydaje się działać prawidłowo. Jednak superwizor wydaje się jakoś uniemożliwić mu prawidłowe funkcjonowanie i nie jestem w stanie powiedzieć jak. worker.php
wykonuje dobrze, ale raportowanie w tej konfiguracji jest stłumione. I z tego powodu oczywiście nie dodaje znacznika czasu.
Czy ktoś ma wystarczającą wiedzę na ten temat, aby dostarczyć wskazówek, jak osiągnąć cel, jakim jest znacznik czasu dla wyników pracownika?
Czy prawdopodobne jest, że parametr polecenia nie obsługuje potoku? Lub może być poleceniem, gdy run jest zwalnianiem terminala, który superwizor nie obsługuje? –