# Script to redirect standard output of a python3 script to /var/log/www-data

# Output log file is named after the script file name plus the suffix _YYYY-MM
# This ensures that at most one month's data is in each log file

# Sample usage:
# cd .../scripts/cronjobs && ./python3logger.sh parsepmcs.py

SCRIPT=${1?Script name}
COMMAND=${2}

LOGDIR=/var/log/www-data

BASE=$(basename $SCRIPT .py)

YYMM=$(date '+%Y-%m')

# Create the cumulative log dir if necessary
ARCHIVE_DIR=${LOGDIR}/${YYMM}
test -d ${ARCHIVE_DIR} || mkdir ${ARCHIVE_DIR}

ARCHIVE_NAME=${BASE}_${YYMM}.log

# Move any existing cumulative log to the correct place:
test -f ${LOGDIR}/${ARCHIVE_NAME} && mv ${LOGDIR}/${ARCHIVE_NAME} ${ARCHIVE_DIR}/${ARCHIVE_NAME}

# Create cumulative log in subdirectory
exec  >>${ARCHIVE_DIR}/${ARCHIVE_NAME}
{
echo
echo '>>>'
START=$(date)
echo "Starting $SCRIPT ($$) at $START"

if [ "$COMMAND" = "shell" ]
then
    bash $SCRIPT
else
    export
    ERRTEE=1 python3 -u $SCRIPT
fi

echo "Completed $SCRIPT ($$) at $(date) (START $START)"
echo '<<<'
}  | tee ${LOGDIR}/${BASE}.log
# and last log in main directory