- Fixes bug 945231.
Change-Id: Ie26555d3e99905ba053510f6b08822b1043aa974
... | ... |
@@ -465,18 +465,22 @@ APACHE_GROUP=${APACHE_GROUP:-$APACHE_USER} |
465 | 465 |
# Set LOGFILE to turn on logging |
466 | 466 |
# We append '.xxxxxxxx' to the given name to maintain history |
467 | 467 |
# where xxxxxxxx is a representation of the date the file was created |
468 |
+if [[ -n "$LOGFILE" || -n "$SCREEN_LOGDIR" ]]; then |
|
469 |
+ LOGDAYS=${LOGDAYS:-7} |
|
470 |
+ TIMESTAMP_FORMAT=${TIMESTAMP_FORMAT:-"%F-%H%M%S"} |
|
471 |
+ CURRENT_LOG_TIME=$(date "+$TIMESTAMP_FORMAT") |
|
472 |
+fi |
|
473 |
+ |
|
468 | 474 |
if [[ -n "$LOGFILE" ]]; then |
469 | 475 |
# First clean up old log files. Use the user-specified LOGFILE |
470 | 476 |
# as the template to search for, appending '.*' to match the date |
471 | 477 |
# we added on earlier runs. |
472 |
- LOGDAYS=${LOGDAYS:-7} |
|
473 | 478 |
LOGDIR=$(dirname "$LOGFILE") |
474 | 479 |
LOGNAME=$(basename "$LOGFILE") |
475 | 480 |
mkdir -p $LOGDIR |
476 | 481 |
find $LOGDIR -maxdepth 1 -name $LOGNAME.\* -mtime +$LOGDAYS -exec rm {} \; |
477 | 482 |
|
478 |
- TIMESTAMP_FORMAT=${TIMESTAMP_FORMAT:-"%F-%H%M%S"} |
|
479 |
- LOGFILE=$LOGFILE.$(date "+$TIMESTAMP_FORMAT") |
|
483 |
+ LOGFILE=$LOGFILE.${CURRENT_LOG_TIME} |
|
480 | 484 |
# Redirect stdout/stderr to tee to write the log file |
481 | 485 |
exec 1> >( tee "${LOGFILE}" ) 2>&1 |
482 | 486 |
echo "stack.sh log $LOGFILE" |
... | ... |
@@ -484,6 +488,23 @@ if [[ -n "$LOGFILE" ]]; then |
484 | 484 |
ln -sf $LOGFILE $LOGDIR/$LOGNAME |
485 | 485 |
fi |
486 | 486 |
|
487 |
+# Set up logging of screen windows |
|
488 |
+# Set SCREEN_LOGDIR to turn on logging of screen windows to the |
|
489 |
+# directory specified in SCREEN_LOGDIR, we will log to the the file |
|
490 |
+# screen-$SERVICE_NAME-$TIMESTAMP.log in that dir and have a link |
|
491 |
+# screen-$SERVICE_NAME.log to the latest log file. |
|
492 |
+# Logs are kept for as long specified in LOGDAYS. |
|
493 |
+if [[ -n "$SCREEN_LOGDIR" ]]; then |
|
494 |
+ |
|
495 |
+ # We make sure the directory is created. |
|
496 |
+ if [[ -d "$SCREEN_LOGDIR" ]]; then |
|
497 |
+ # We cleanup the old logs |
|
498 |
+ find $SCREEN_LOGDIR -maxdepth 1 -name screen-\*.log -mtime +$LOGDAYS -exec rm {} \; |
|
499 |
+ else |
|
500 |
+ mkdir -p $SCREEN_LOGDIR |
|
501 |
+ fi |
|
502 |
+fi |
|
503 |
+ |
|
487 | 504 |
# So that errors don't compound we exit on any errors so you see only the |
488 | 505 |
# first error that occurred. |
489 | 506 |
trap failed ERR |
... | ... |
@@ -1357,6 +1378,12 @@ function screen_it { |
1357 | 1357 |
# creating a new window in screen and then sends characters, so if |
1358 | 1358 |
# bash isn't running by the time we send the command, nothing happens |
1359 | 1359 |
sleep 1.5 |
1360 |
+ |
|
1361 |
+ if [[ -n ${SCREEN_LOGDIR} ]]; then |
|
1362 |
+ screen -S stack -p $1 -X logfile ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log |
|
1363 |
+ screen -S stack -p $1 -X log on |
|
1364 |
+ ln -sf ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${1}.log |
|
1365 |
+ fi |
|
1360 | 1366 |
screen -S stack -p $1 -X stuff "$2$NL" |
1361 | 1367 |
fi |
1362 | 1368 |
} |