Eu não sugeriria misturar o stdout e stderr dentro do seu programa, mas como você lida com ele fora é com você. stdout
foi destinado a dados processados destinados a um pipeline, enquanto stderr
é especificamente para mensagens que não são de dados. Isso torna certos comportamentos possíveis, como o processamento em lote, sem alterar o comportamento interativo existente. Seu caso é diferente - há uma boa chance de que stdout signifique pouco ou nada.
Como runit
tem uma abordagem ligeiramente diferente do log por svlog
, e o serviço que você está escrevendo provavelmente não será desassossificado (o que neste caso significa "desconectar de um tty"), então depende de você se você quiser capturar tudo em um único log, ou não, através do script /etc/sv/<servicename>/run
. Na maior parte, a maioria dos scripts de execução usa
exec 2>&1
para fundir os dois fluxos juntos, pois a maioria dos serviços não repassa dados via stdout. Se você quiser usar svlog
, precisará criar um script em /etc/sv/<servicename>/log/run
com o comando apropriado para iniciá-lo. Provavelmente parece semelhante (mas não exatamente):
#!/bin/sh
exec 2>&1
exec svlog -tt main
onde main
é um link simbólico para um diretório de registro.