Keep logging somewhat sane

We don't want an infinitely growing logfile.
Instead we set a reasonable cap, currently 4MiB, and retain one backup.
main
mj-saunders 2022-11-03 16:08:10 +04:00
parent 12f12efb9b
commit 01295e851f
1 changed files with 24 additions and 9 deletions

View File

@ -3,11 +3,6 @@
#set -eux
LOG_FILE="/media/workshop/Projects/openmedianetwork/.omn_watchdog.log"
touch ${LOG_FILE}
# Redirect all output to LOG_FILE but preserve a link to stdout should we
# still want to use it
exec 3>&1 1>>${LOG_FILE} 2>&1
RECIPIENTS=(
saunders@openworlds.info
@ -16,7 +11,7 @@ RECIPIENTS=(
URLS=(
unite.openworlds.info
openworlds.info
# NOTE: [Currently down] openworlds.info
pad.openworlds.info
visionon.tv
activism.openworlds.info
@ -35,7 +30,22 @@ SERVICES=(
#mail.openworlds.info
)
send_mail() {
rotate_log()
{
local -n log=$1
local max_log=4096 # 4M as we get size in K below
local log_size=$(du -k "${log}" | cut -f 1)
if ((${log_size} > ${max_log})); then
# Clobber any previous backup
mv -f ${log} ${log}.1
fi
touch ${log}
}
send_mail()
{
local -n error_list=$1
local error_string=""
@ -48,13 +58,18 @@ send_mail() {
cat mail_template \
| sed "s/{ERR_LIST}/${error_string}/g" \
| msmtp -a omn_server_watch ${RECIPIENTS[@]} 2>/dev/null \
| msmtp -a omn_server_watch ${RECIPIENTS[@]} \
|| echo "[ERROR] Failed to send mail!"
}
declare -A FLAGGED
echo "== $(date)"
rotate_log LOG_FILE
# Redirect all output to LOG_FILE but preserve a link to stdout should we
# still want to use it
exec 3>&1 1>>${LOG_FILE} 2>&1
echo ">> $(date)"
echo "== Checking:"
for uri in "${URLS[@]}"; do \