Ausgabe von Protokollen in einer dynamisch erstellten Ordnerstruktur (basierend auf dem aktuellen Datum). Verwendung von Upstart zum Erstellen des Dienstes

Ausgabe von Protokollen in einer dynamisch erstellten Ordnerstruktur (basierend auf dem aktuellen Datum). Verwendung von Upstart zum Erstellen des Dienstes

Ich habe die folgende Upstart-Konfiguration:

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

Dies hängt alle STDOUT- und STDERR-Meldungen an die dynamische Datei an, die jede Minute erstellt wird (und erstellt sie, wenn sie nicht existiert). Jetzt wollte ich echte Ordner haben, wie in

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

aber den Code zu ändern

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

gibt nicht die erwartete Ausgabe, da der Ordner nicht existiert. Ich habe darüber nachgedacht, dem Skript ein Steuerelement hinzuzufügen, das prüft, ob der Ordner existiert oder nicht, und ihn erstellt, wenn nicht, aber ich erwarte, dass es nur einmal ausgeführt wird, wenn das Skript ausgeführt wird, und nicht bei jeder STDOUT-Nachricht.

Gibt es dafür eine Lösung?

Danke

verwandte Informationen