improve logging

dev
Bryan 2020-11-04 00:10:07 -06:00
parent a3dbe6cebb
commit bf527e0090
1 changed files with 32 additions and 25 deletions

View File

@ -6,16 +6,18 @@ LOGFILE="/var/log/borgwrapper/borgwrapper.log"
# Create log directory if not exist
if [ ! -d $(dirname ${LOGFILE}) ]; then
mkdir $(dirname ${LOGFILE}
mkdir $(dirname ${LOGFILE})
fi
log () {
echo "$@" >> ${LOGFILE}
message=${*:-$(</dev/stdin)}
echo "$(date) info: ${message}" >> ${LOGFILE}
}
err () {
echo "$@" >> ${LOGFILE}
message=${*:-$(</dev/stdin)}
echo "$(date) error: ${message}" >> ${LOGFILE}
}
print_usage () {
@ -93,7 +95,7 @@ borg_init () {
)
fi
log "Initializing ${BORG_REPO}"
${BORG} init "${BORG_INIT_ARGS[@]}" "${BORG_REPO}" > ${LOGFILE}
${BORG} init "${BORG_INIT_ARGS[@]}" "${BORG_REPO}" 2>&1 | log
}
borg_backup () {
@ -125,7 +127,7 @@ borg_backup () {
"${BORG_REPO}"::"${SYSTEM_NAME}-$(date -u +'%Y-%m-%dT%H-%M-%SZ')" \
"${PATHS[@]}" \
"${EXCLUDE_CMD[@]}" \
>> ${LOGFILE} \
2>&1 | log \
|| log "Error backing up. Has repo been initialized?"
}
@ -152,7 +154,7 @@ borg_prune () {
--keep-monthly=${KEEP_MONTHLY:-0} \
--keep-yearly=${KEEP_YEARLY:-0} \
"${BORG_REPO}" \
>> "${LOGFILE}
2>&1 | log
}
borg_verify () {
@ -163,23 +165,23 @@ borg_verify () {
fi
log "Running borg check"
${BORG} check "${BORG_CHECK_ARGS[@]}" "${BORG_REPO}" >> ${LOGFILE}
${BORG} check "${BORG_CHECK_ARGS[@]}" "${BORG_REPO}" 2>&1 | log
}
borg_exec () {
export BORG_REPO
${BORG} "$@" >> ${LOGFILE}
${BORG} "$@" | log
}
convert_rate () {
# Convert IN_RATE to bytes
local IN_RATE=${1}
local RATE=0
local B_REGEX="^([0-9]+)$"
local KIB_REGEX="^([0-9]+)K$"
local MIB_REGEX="^([0-9]+)M$"
local GIB_REGEX="^([0-9]+)G$"
local TIB_REGEX="^([0-9]+)T$"
local B_REGEX='^([0-9]+)$'
local KIB_REGEX='^([0-9]+)K$'
local MIB_REGEX='^([0-9]+)M$'
local GIB_REGEX='^([0-9]+)G$'
local TIB_REGEX='^([0-9]+)T$'
if [[ ${IN_RATE} =~ ${TIB_REGEX} ]]; then
RATE=$(( ${BASH_REMATCH[1]} * 1024**4 ))
@ -192,16 +194,16 @@ convert_rate () {
elif [[ ${IN_RATE} =~ ${B_REGEX} ]]; then
RATE=${BASH_REMATCH[1]}
else
>&2 echo "${IN_RATE} is not a valid rate"
false >> ${LOGFILE}
>&2 echo "${IN_RATE} is not a valid rate" | log
false
fi
echo ${RATE} >> ${LOGFILE}
echo ${RATE} | log
}
limit_bw () {
if ! [[ -x $(command -v pv) ]]; then
>&2 echo "WARNING: BWLIMIT is enabled, but the utility 'pv' is not available. Continuing without bandwidth limitation."
>&2 echo "WARNING: BWLIMIT is enabled, but the utility 'pv' is not available. Continuing without bandwidth limitation." | log
return 0
fi
@ -210,7 +212,7 @@ limit_bw () {
chmod +x ${PV_WRAPPER}
echo -e '#!/bin/bash\npv -q -L ${RATE_LIMIT} | "$@"' > ${PV_WRAPPER}
export BORG_RSH="${PV_WRAPPER} ${BORG_RSH}"
echo "Limiting bandwith to ${RATE_LIMIT} bytes/s" >> ${LOGFILE}
echo "Limiting bandwith to ${RATE_LIMIT} bytes/s" | log
}
exit_backup () {
@ -265,7 +267,7 @@ MODE="${1}"
echo "Loading config from ${CONFIG}"
source "${CONFIG}" || exit 1
source "${CONFIG}" || log "Config file: ${CONFIG} does not exit"; exit 1
# Set some defaults
[[ -n ${BORG_RSH} ]] || BORG_RSH="ssh"
@ -298,17 +300,22 @@ mkdir -p "${LOCKDIR}"
borg_init
elif [[ ${MODE} == "backup" ]]; then
trap 'exit_backup $?' ERR INT TERM
save_package_list
echo "Saving package list..." >> ${LOGFILE}
dump_mongo
echo "Dumping mongo..." >> ${LOGFILE}
dump_sql
echo "Dumping sql..." >> ${LOGFILE}
log "Saving package list..."
save_package_list
log "Dumping mongo..."
dump_mongo
log "Dumping sql..."
dump_sql
log "Running borg backup..."
borg_backup
echo "Running borg backup..." >> ${LOGFILE}
log "Running borg prune..."
borg_prune
echo "Running borg prune..." >> ${LOGFILE}
exit_backup 0
elif [[ ${MODE} == "verify" ]]; then
trap 'exit_verify $?' ERR INT TERM
@ -316,7 +323,7 @@ mkdir -p "${LOCKDIR}"
exit_verify 0
elif [[ ${MODE} == "exec" ]]; then
if [[ $# -le 1 ]]; then
>&2 echo "ERROR: No borg arguments given" >> ${LOGFILE}
>&2 echo "ERROR: No borg arguments given" | err
exit 1
fi