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 메시지.

이에 대한 해결책이 있습니까?

감사합니다

관련 정보