sysfiles/usr/local/jilits/libverbosity.sh

62 lines
1.2 KiB
Bash

#!/bin/bash
# Write to log
wrlog() {
echo "$1" >>"${LOG_FILE:?}"
}
# Write to stdout/stderr and log
echlog() {
local dt
dt="$(date +"%Y-%m-%dT%H:%M:%S")"
if [ -z "$1" ] && [ -z "$2" ]; then
echo ""
wrlog ""
elif [ -n "$1" ]; then
echo "$dt $1"
wrlog "$dt $1"
elif [ -n "$2" ]; then
echo "$dt $2" 1>&2
wrlog "$dt $2"
fi
}
# Write to stderr
errlog() {
echlog "" "$1"
}
# Rotate the log file
# TODO: Implement support for multiple rollovers and bz2 compression
rotlog() {
local filesize maxsize="${1:-10000000}"
if ! [ -f "$LOG_FILE" ]; then
echlog "File doesn't exist: '$LOG_FILE'"
return 0
fi
filesize="$(stat -c%s "$LOG_FILE")"
if ((filesize > maxsize)); then
echlog "Rotating log ($filesize > $maxsize)"
[ -f "$LOG_FILE.0" ] && rm "$LOG_FILE.0"
mv "$LOG_FILE" "$LOG_FILE.0"
fi
}
# Echo $1 and exit with code $2
echxit() {
if [ "$2" -eq 0 ]; then
echlog "$1"
exit "$2"
elif [ "$2" -gt 0 ]; then
errlog "$1"
exit "$2"
fi
errlog "$1"
errlog "Invalid exit code specified to echxit"
exit 255
}