Correct Cron logging (#132)

This commit is contained in:
Jon 2016-11-04 14:03:04 -04:00 committed by Henric Andersson
commit a0cab09509

View file

@ -67,11 +67,22 @@ LogStdOut() {
fi fi
} }
# $1 - Filename to add to log
# $2 - Type to log file contents as (INFO, ERROR, WARNING)
LogFileContents() {
while read line;
do
Log "$2" "$line"
done <"$1"
}
# $1 - Message # $1 - Message
# $2 - Print newline? defaults to yes # $2 - Print newline? defaults to yes
infoLog() { infoLog() {
Log "INFO" "$1" Log "INFO" "$1"
if [ "${CRON}" = "no" ]; then
LogStdOut "" "$1" "$2" LogStdOut "" "$1" "$2"
fi
} }
infoLogNoNewline() { infoLogNoNewline() {
@ -80,7 +91,9 @@ infoLogNoNewline() {
errorLog() { errorLog() {
Log "ERROR" "$1" >&2 Log "ERROR" "$1" >&2
LogStdOut "ERROR" "$1" "$2" if [ "${CRON}" = "no" ]; then
LogStdOut "ERROR" "$1" "$2" >&2
fi
} }
errorLogNoNewline() { errorLogNoNewline() {
@ -89,7 +102,9 @@ errorLogNoNewline() {
warningLog() { warningLog() {
Log "WARNING" "$1" >&2 Log "WARNING" "$1" >&2
LogStdOut "WARNING" "$1" "$2" if [ "${CRON}" = "no" ]; then
LogStdOut "WARNING" "$1" "$2" >&2
fi
} }
warningLogNoNewline() { warningLogNoNewline() {
@ -145,6 +160,8 @@ FILE_FAILCAUSE=$(mktemp /tmp/plexupdate.failcause.XXXX)
FILE_KAKA=$(mktemp /tmp/plexupdate.kaka.XXXX) FILE_KAKA=$(mktemp /tmp/plexupdate.kaka.XXXX)
FILE_SHA=$(mktemp /tmp/plexupdate.sha.XXXX) FILE_SHA=$(mktemp /tmp/plexupdate.sha.XXXX)
FILE_WGETLOG=$(mktemp /tmp/plexupdate.wget.XXXX) FILE_WGETLOG=$(mktemp /tmp/plexupdate.wget.XXXX)
FILE_CMDLOG=$(mktemp /tmp/plexupdate.cmds.XXXX)
FILE_CMDERR=$(mktemp /tmp/plexupdate.errs.XXXX)
# Current pages we need - Do not change unless Plex.tv changes again # Current pages we need - Do not change unless Plex.tv changes again
URL_LOGIN=https://plex.tv/users/sign_in.json URL_LOGIN=https://plex.tv/users/sign_in.json
@ -188,6 +205,7 @@ usage() {
echo " --email <plex.tv email> Plex.TV email address" echo " --email <plex.tv email> Plex.TV email address"
echo " --pass <plex.tv password> Plex.TV password" echo " --pass <plex.tv password> Plex.TV password"
echo " --server <Plex server address> Address of Plex Server" echo " --server <Plex server address> Address of Plex Server"
echo " --port <Plex server port> Port for Plex Server. Used with --server"
echo " --saveconfig Save the configuration to config file" echo " --saveconfig Save the configuration to config file"
echo echo
cronexit 0 cronexit 0
@ -412,8 +430,9 @@ if [ ! -z "${RELEASE}" ]; then
cronexit 255 cronexit 255
fi fi
if [ "${CRON}" = "yes" -o "${QUIET}" = "yes" ]; then if [ "${CRON}" = "yes" -a "${QUIET}" = "no" ]; then
# The new logging features automatically redirect to the log no matter what. exec 3>&1 >${FILE_CMDLOG} 2>${FILE_CMDERR}
elif [ "${QUIET}" = "yes" ]; then
# Redirect STDOUT to dev null. Use >&3 if you really, really, REALLY need to print to STDOUT # Redirect STDOUT to dev null. Use >&3 if you really, really, REALLY need to print to STDOUT
exec 3>&1 >/dev/null exec 3>&1 >/dev/null
fi fi
@ -528,7 +547,15 @@ keypair() {
# Setup an cronexit handler so we cleanup # Setup an cronexit handler so we cleanup
function cleanup { function cleanup {
if [ "${CRON}" = yes -a "${RAWEXIT}" -ne 5 -a -f "${FILE_STDOUTLOG}" ]; then if [ "${CRON}" = yes -a "${RAWEXIT}" -ne 5 -a -f "${FILE_CMDLOG}" ]; then
infoLog "Command Output:" >/dev/null
OUTPUTLINES=$((OUTPUTLINES+$(wc -l <${FILE_CMDLOG})))
cat ${FILE_CMDLOG} >>${FILE_STDOUTLOG}
errorLog "Command Errors/Warnings:" >/dev/null
OUTPUTLINES=$((OUTPUTLINES+$(wc -l <${FILE_CMDERR})))
cat ${FILE_CMDERR} >>${FILE_STDOUTLOG}
exec 1>&3 exec 1>&3
tail -n ${OUTPUTLINES} "${FILE_STDOUTLOG}" tail -n ${OUTPUTLINES} "${FILE_STDOUTLOG}"
fi fi
@ -538,6 +565,8 @@ function cleanup {
rm "${FILE_KAKA}" 2>/dev/null >/dev/null rm "${FILE_KAKA}" 2>/dev/null >/dev/null
rm "${FILE_SHA}" 2>/dev/null >/dev/null rm "${FILE_SHA}" 2>/dev/null >/dev/null
rm "${FILE_WGETLOG}" 2>/dev/null >/dev/null rm "${FILE_WGETLOG}" 2>/dev/null >/dev/null
rm "${FILE_CMDLOG}" 2>/dev/null >/dev/null
rm "${FILE_CMDERR}" 2>/dev/null >/dev/null
} }
trap cleanup EXIT trap cleanup EXIT
@ -575,6 +604,7 @@ if [ "${PUBLIC}" = "no" ]; then
elif [ $RESULTCODE -ne 201 ]; then elif [ $RESULTCODE -ne 201 ]; then
errorLog "Failed to login, debug information:" errorLog "Failed to login, debug information:"
cat "${FILE_FAILCAUSE}" >&2 cat "${FILE_FAILCAUSE}" >&2
LogFileContents "${FILE_FAILCAUSE}" "ERROR"
cronexit 1 cronexit 1
fi fi