Eu estava tendo o mesmo problema recentemente e não consegui descobrir supervisor-stdout
. Aqui está o que eu fiz:
No bash, você pode usar o redirecionamento de E / S e Process Substitution para encaminhar stdout
, stderr
através de outro processo.
#!/usr/bin/env bash
# setup fd-3 to point to the original stdout
exec 3>&1
# setup fd-4 to point to the original stderr
exec 4>&2
# get the prefix from SUPERVISOR_PROCESS_NAME environement variable
printf -v PREFIX "%-10.10s" ${SUPERVISOR_PROCESS_NAME}
# reassign stdout and stderr to a preprocessed and redirected to the original stdout/stderr (3 and 4) we have create eralier
exec 1> >( perl -ne '$| = 1; print "'"${PREFIX}"' | $_"' >&3)
exec 2> >( perl -ne '$| = 1; print "'"${PREFIX}"' | $_"' >&4)
# from here on everthing that outputs to stdout/stderr will be go through the perl script
echo "I will be prefixed"
# don't forget to use exec
Agora você pode configurar o supervisor para usar stdout e stderr para registro:
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
e como comando, use um script bash que configure o redirecionamento de E / S.