將日誌輸出到動態建立的資料夾結構(基於目前日期),使用 upstart 建立服務

將日誌輸出到動態建立的資料夾結構(基於目前日期),使用 upstart 建立服務

我有以下暴發戶配置:

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

這會將任何 STDOUT 和 STDERR 訊息附加到每分鐘建立的動態檔案(如果不存在則建立)。現在我想要有實際的資料夾,如

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

但將程式碼更改為

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

不會給出預期的輸出,因為該資料夾不存在。我考慮過在腳本中添加一個控件,檢查資料夾是否存在,如果不存在則創建它,但我希望它只運行一次,即腳本執行時,而不是在每個 STDOUT 訊息。

有什麼辦法可以解決這個問題嗎?

謝謝

相關內容