#!/bin/bash # set -x if [ "${log_helpers_sourced:-1}" = "1" ]; then # include only once readonly log_helpers_sourced=${BASH_SOURCE[0]} readonly log_file=/var/log/update_controller.log if ! [ -f "$log_file" ]; then touch $log_file fi readonly DEBUG=0 readonly INFO=1 readonly WARN=2 readonly CRIT=3 readonly ERROR=4 readonly FATAL=5 readonly MAX_DEBUG_LEVEL=6 log_level=$INFO FATAL_FAILURE=false set_dbg_level () { if [ $1 < $MAX_DEBUG_LEVEL ]; then log_level=$1 fi } dbg_level () { return $log_level } log_to_file() { if [[ $(("$(wc -l < $log_file)")) -ge $((100000)) ]]; then # remove first line sed -e 1d -i $log_file fi local msg="$(date +'%Y-%m-%d_%T'): $*" echo "$msg" >> $log_file } log() { local msg="$(date +'%Y-%m-%d_%T'): $*" echo "log:$msg" >&2 } log_debug() { log_to_file "DEBUG $*" if [ $log_level -le $DEBUG ]; then log "DEBUG $*" fi } log_info() { log_to_file "INFO $*" if [ $log_level -le $INFO ]; then log "INFO $*" fi } log_warn() { log_to_file "WARN $*" if [ $log_level -le $WARN ]; then log "WARN $*" fi } log_crit() { log_to_file "CRIT $*" if [ $log_level -le $CRIT ]; then log "CRIT $*" fi } log_error() { log_to_file "ERROR $*" if [ $log_level -le $ERROR ]; then log "ERROR $*" fi } log_fatal() { log_to_file "FATAL $*" if [ $log_level -le $FATAL ]; then log "FATAL $*" log "exiting ..." FATAL_FAILURE=true exit 1 fi } ############################################################################### fi ### include guard