Salida de registros a una estructura de carpetas creada dinámicamente (basada en la fecha actual), utilizando upstart para crear el servicio.

Salida de registros a una estructura de carpetas creada dinámicamente (basada en la fecha actual), utilizando upstart para crear el servicio.

Tengo la siguiente configuración inicial:

start on runlevel [2345]
stop on runlevel [06]


respawn 
respawn limit 99 5
#respawn is used to start the nodejs again, even if it fails.

env NODE_ENV=production
env PROJ=/home

script
    cd $PROJ
    cd htdocs
    exec sudo /opt/nodejs/bin/node app.js 2>&1 >> $PROJ/logs/$(date +"%Y_%m_%d_%I_%M").log
end script

Esto agrega (y crea si no existe), al archivo dinámico que se crea cada minuto, cualquier mensaje STDOUT y STDERR. Ahora quería tener carpetas reales, como en

/logs/2018/05/29/10_05.log

pero cambiando el código a

exec /opt/bitnami/nodejs/bin/node app.js 2>&1 >> $PROJ/logs/$(date +"%Y")/$(date +"%m")/$(date +"%d")/$(date +"%I_%M").log

no da el resultado esperado, porque la carpeta no existe. Pensé en agregar un control en el script, que verifica si la carpeta existe o no, y la crea si no, pero espero que se ejecute solo una vez, el momento en que se ejecuta el script, y no en cada mensaje STDOUT.

Hay alguna solución para esto?

Gracias

información relacionada