According to the
runsv man page:
If the directory service/log exists, runsv creates a pipe, redirects service/run's and service/finish's standard output to the pipe, switches to the directory service/log and starts ./run script. The standard input of the log service is redirected to read from the pipe.
runsv only redirects service's standard output, but not standard
error output, to svlogd standard input. My question is: why? Of course I want
to log my unit's standard error output; why do I have to pay extra attention
exec 2>&1 to the beginning of each unit file?