Improve log file handling:
* Elimiate subshells to produce logfiles (fixes bug 885091) * Clean up log files older than 7 days (default) * Append date/time to specified log file name * Default LOGFILE='', now must set to get logging This changes the default behaviour of stack.sh to not write a log file unless LOGFILE is set. Change-Id: I5d3fb65e12ccdb52fca5a41ee8f5777c046cd375
This commit is contained in:
parent
f4497d5eb9
commit
471de7a34b
36
stack.sh
36
stack.sh
@ -390,8 +390,31 @@ read_password SERVICE_TOKEN "ENTER A SERVICE_TOKEN TO USE FOR THE SERVICE ADMIN
|
|||||||
# Horizon currently truncates usernames and passwords at 20 characters
|
# Horizon currently truncates usernames and passwords at 20 characters
|
||||||
read_password ADMIN_PASSWORD "ENTER A PASSWORD TO USE FOR HORIZON AND KEYSTONE (20 CHARS OR LESS)."
|
read_password ADMIN_PASSWORD "ENTER A PASSWORD TO USE FOR HORIZON AND KEYSTONE (20 CHARS OR LESS)."
|
||||||
|
|
||||||
LOGFILE=${LOGFILE:-"$PWD/stack.sh.$$.log"}
|
# Log files
|
||||||
(
|
# ---------
|
||||||
|
|
||||||
|
# Set up logging for stack.sh
|
||||||
|
# Set LOGFILE to turn on logging
|
||||||
|
# We append '.xxxxxxxx' to the given name to maintain history
|
||||||
|
# where xxxxxxxx is a representation of the date the file was created
|
||||||
|
if [[ -n "$LOGFILE" ]]; then
|
||||||
|
# First clean up old log files. Use the user-specified LOGFILE
|
||||||
|
# as the template to search for, appending '.*' to match the date
|
||||||
|
# we added on earlier runs.
|
||||||
|
LOGDAYS=${LOGDAYS:-7}
|
||||||
|
LOGDIR=$(dirname "$LOGFILE")
|
||||||
|
LOGNAME=$(basename "$LOGFILE")
|
||||||
|
find $LOGDIR -maxdepth 1 -name $LOGNAME.\* -mtime +$LOGDAYS -exec rm {} \;
|
||||||
|
|
||||||
|
TIMESTAMP_FORMAT=${TIMESTAMP_FORMAT:-"%F-%H%M%S"}
|
||||||
|
LOGFILE=$LOGFILE.$(date "+$TIMESTAMP_FORMAT")
|
||||||
|
# Redirect stdout/stderr to tee to write the log file
|
||||||
|
exec 1> >( tee "${LOGFILE}" ) 2>&1
|
||||||
|
echo "stack.sh log $LOGFILE"
|
||||||
|
# Specified logfile name always links to the most recent log
|
||||||
|
ln -sf $LOGFILE $LOGDIR/$LOGNAME
|
||||||
|
fi
|
||||||
|
|
||||||
# So that errors don't compound we exit on any errors so you see only the
|
# So that errors don't compound we exit on any errors so you see only the
|
||||||
# first error that occurred.
|
# first error that occurred.
|
||||||
trap failed ERR
|
trap failed ERR
|
||||||
@ -1403,13 +1426,8 @@ fi
|
|||||||
# Fin
|
# Fin
|
||||||
# ===
|
# ===
|
||||||
|
|
||||||
|
set +o xtrace
|
||||||
|
|
||||||
) 2>&1 | tee "${LOGFILE}"
|
|
||||||
|
|
||||||
# Check that the left side of the above pipe succeeded
|
|
||||||
for ret in "${PIPESTATUS[@]}"; do [ $ret -eq 0 ] || exit $ret; done
|
|
||||||
|
|
||||||
(
|
|
||||||
# Using the cloud
|
# Using the cloud
|
||||||
# ===============
|
# ===============
|
||||||
|
|
||||||
@ -1436,5 +1454,3 @@ echo "This is your host ip: $HOST_IP"
|
|||||||
|
|
||||||
# Indicate how long this took to run (bash maintained variable 'SECONDS')
|
# Indicate how long this took to run (bash maintained variable 'SECONDS')
|
||||||
echo "stack.sh completed in $SECONDS seconds."
|
echo "stack.sh completed in $SECONDS seconds."
|
||||||
|
|
||||||
) | tee -a "$LOGFILE"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user