diff options
Diffstat (limited to 'lib/_ak_log')
-rwxr-xr-x | lib/_ak_log | 106 |
1 files changed, 84 insertions, 22 deletions
diff --git a/lib/_ak_log b/lib/_ak_log index 8d6972d..51064e7 100755 --- a/lib/_ak_log +++ b/lib/_ak_log @@ -18,6 +18,48 @@ ### along with this program. If not, see <http://www.gnu.org/licenses/>. ### +source ./lib/_ak_lib_load 2>/dev/null || source $AK_LIBDIR/_ak_lib_load 2>/dev/null +_ak_lib_load _ak_datetime + +export AK_LOGSDIR="$AK_WORKDIR/logs" +export AK_LOGSFILE="$AK_LOGSDIR/log" +export AK_LOGTOFILE="no" +if [ -d $AK_SETTINGS ] +then + if [ ! -d $AK_SETTINGS/logging ] + then + mkdir -p $AK_SETTINGS/logging + fi + if [ -f $AK_SETTINGS/logging/logToFile ] + then + export AK_LOGTOFILE="$(cat $AK_SETTINGS/logging/logToFile)" + else + echo -n $AK_LOGTOFILE > $AK_SETTINGS/logging/logToFile + fi +fi + +if [ -n "${AK_WORKDIR}" ] && [ -d "${AK_WORKDIR}" ] +then + if [ ! -d $AK_LOGSDIR ] + then + if [ -f $AK_LOGSDIR ] + then + TEMP="$(mktemp)" + mv $AK_LOGSDIR $TEMP + mkdir -p $AK_LOGSDIR + mv $TEMP $AK_LOGSFILE + _ak_log_info 'Migration of logs was successful!' + else + mkdir -p $AK_LOGSDIR + touch $AK_LOGSFILE + _ak_log_info 'Update was successful!' + fi + fi +else + printf "Can't find AK_WORKDIR to work upon.\n" + exit 1 +fi + function _ak_log_print_log_line(){ if [ -n "$1" ] then @@ -26,7 +68,7 @@ function _ak_log_print_log_line(){ messagetype="$(echo "$*" | awk '{print $3}')" message="$(echo "$*" | cut -d ' ' -f4-)" printf '%s \033[1;32m%s\033[0;00m \033[1;31m%s\033[0;00m %s\n' \ - "$(date --date=@$timestamp +%Y%m%d_%H%M%S 2>/dev/null || date -r $timestamp +%Y%m%d_%H%M%S 2>/dev/null)" \ + "$(_ak_datetime_unix_to_human $timestamp)" \ "$program" \ "$messagetype" \ "$message" @@ -40,6 +82,11 @@ function _ak_log_follow(){ done } +function _ak_log_last_line(){ + p="$(tail -n 1 $AK_LOGSFILE | tr -d '\n')" + _ak_log_print_log_line "$p" +} + function _ak_log_grep(){ if [ ! -z $1 ] && [ -n "$1" ] then @@ -63,50 +110,64 @@ function _ak_log_grep(){ } function _ak_log_rotate(){ + cd $AK_LOGSDIR if [ -f $AK_LOGSFILE ] then - tar cvfz $AK_ARCHIVESDIR/logs_$(date -u +%s).tar.gz $AK_WORKDIR/logs - cat /dev/null > $AK_WORKDIR/logs + gzip -c log > $(_ak_datetime_unix)_log.gz + cat /dev/null > log fi - if [ -f $AK_WORKDIR/akd.log ] + if [ -f $AK_LOGSDIR/akd.log ] then - tar cvfz $AK_ARCHIVESDIR/akd-logs_$(date -u +%s).tar.gz $AK_WORKDIR/akd.log - cat /dev/null > $AK_WORKDIR/akd.log + gzip -c akd.log > $(_ak_datetime_unix)_akd-log.gz + cat /dev/null > akd.log fi } function _ak_log_message(){ - TS="$(date -u +%s)" + TS="$(_ak_datetime_unix)" if [ ! -z $1 ] && [ -n "$1" ] then - if [ ! -z "$2" ] && [ -n "$2" ] + prg="$1" + shift + if [ ! -z "$1" ] && [ -n "$1" ] then - if [ ! -z "$3" ] && [ -n "$3" ] + tp="$1" + shift + if [ ! -z "$*" ] && [ -n "$*" ] then - msg="$(echo -n $*| cut -d ' ' -f 3-)" - echo "$TS" "<$1>" "[$2]" "$msg" >> $AK_LOGSFILE + msg="$*" + if [ ! -z $AK_LOGTOFILE ] && [ -n "$AK_LOGTOFILE" ] && [ "$AK_LOGTOFILE" == "yes" ] + then + echo "$TS" "<$prg>" "[$tp]" "$msg" >> $AK_LOGSFILE + fi if [ ! -z $AK_DEBUG ] && [ -n "$AK_DEBUG" ] && [ "$AK_DEBUG" == "yes" ] then - _ak_log_print_log_line "$TS <$1> [$2] $msg" >&2 + _ak_log_print_log_line "$TS <$prg> [$tp] $msg" >&2 fi else - echo "$TS" "<$1>" "[ERROR]" "No message" >> $AK_LOGSFILE + echo "$TS" "<$prg>" "[ERROR]" "No message" >> $AK_LOGSFILE if [ "$AK_DEBUG" == "yes" ] then - echo "$TS" "<$1>" "[ERROR]" "No message" >&2 + echo "$TS" "<$prg>" "[ERROR]" "No message" >&2 fi return 1 fi else - echo "$TS" "<$1>" "[ERROR]" "No type and message" >> $AK_LOGSFILE + if [ ! -z $AK_LOGTOFILE ] && [ -n "$AK_LOGTOFILE" ] && [ "$AK_LOGTOFILE" == "yes" ] + then + echo "$TS" "<$prg>" "[ERROR]" "No type and message" >> $AK_LOGSFILE + fi if [ "$AK_DEBUG" == "yes" ] then - echo "$TS" "<$1>" "[ERROR]" "No type and message" >&2 + echo "$TS" "<$prg>" "[ERROR]" "No type and message" >&2 fi return 1 fi else - echo "$TS" "<$(basename $0)>" "[ERROR]" "No arguments given" >> $AK_LOGSFILE + if [ ! -z $AK_LOGTOFILE ] && [ -n "$AK_LOGTOFILE" ] && [ "$AK_LOGTOFILE" == "yes" ] + then + echo "$TS" "<$(basename $0)>" "[ERROR]" "No arguments given" >> $AK_LOGSFILE + fi if [ "$AK_DEBUG" == "yes" ] then echo "$TS" "<$(basename $0)>" "[ERROR]" "No arguments given" >&2 @@ -116,23 +177,24 @@ function _ak_log_message(){ } function _ak_log_exit(){ - _ak_log_message "$PROGRAM" "EXIT" "$1" + _ak_log_message "$PROGRAM" "EXIT" "$*" } function _ak_log_warning(){ - _ak_log_message "$PROGRAM" "WARNING" "$1" + _ak_log_message "$PROGRAM" "WARNING" "$*" } function _ak_log_debug(){ - _ak_log_message "$PROGRAM" "DEBUG" "$1" + _ak_log_message "$PROGRAM" "DEBUG" "$*" } function _ak_log_error(){ - _ak_log_message "$PROGRAM" "ERROR" "$1" + _ak_log_message "$PROGRAM" "ERROR" "$*" } function _ak_log_info(){ - _ak_log_message "$PROGRAM" "INFO" "$1" + _ak_log_message "$PROGRAM" "INFO" "$*" } +# _ak_log_debug "_ak_log loaded $(caller)" # vim: set syntax=bash |