Я бы рекомендовал использовать ruby logger, это лучше, чем put, у вас может быть несколько уровней журнала, которые вы можете включать / выключать: отладка, предупреждение, информация, ошибка и т. Д.
logger = Logger.new(STDOUT)
logger = Logger.new("/var/log/my-daemon.log")
Я использую пакет runit для управления службами ruby, у него есть svlogd, который перенаправляет вывод демона в файл журнала, вот скрипт запуска процесса логгера:
#!/bin/sh
set -e
LOG=/var/log/my-daemon
test -d "$LOG" || mkdir -p -m2750 "$LOG" && chown nobody:adm "$LOG"
exec chpst -unobody svlogd -tt "$LOG"