aboutsummaryrefslogtreecommitdiff
path: root/lib/_ak_log
diff options
context:
space:
mode:
Diffstat (limited to 'lib/_ak_log')
-rwxr-xr-xlib/_ak_log153
1 files changed, 116 insertions, 37 deletions
diff --git a/lib/_ak_log b/lib/_ak_log
index 9e56606..51064e7 100755
--- a/lib/_ak_log
+++ b/lib/_ak_log
@@ -1,6 +1,66 @@
-#!/bin/bash
+#!/usr/bin/env bash
+###
+### arching-kaos-tools
+### Tools to interact and build an Arching Kaos Infochain
+### Copyright (C) 2021 - 2025 kaotisk
+###
+### This program is free software: you can redistribute it and/or modify
+### it under the terms of the GNU General Public License as published by
+### the Free Software Foundation, either version 3 of the License, or
+### (at your option) any later version.
+###
+### This program is distributed in the hope that it will be useful,
+### but WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+### GNU General Public License for more details.
+###
+### You should have received a copy of the GNU General Public License
+### along with this program. If not, see <http://www.gnu.org/licenses/>.
+###
-_ak_log_print_log_line(){
+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
timestamp="$(echo "$*" | awk '{print $1}')"
@@ -8,21 +68,26 @@ _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)" \
+ "$(_ak_datetime_unix_to_human $timestamp)" \
"$program" \
"$messagetype" \
"$message"
fi
}
-_ak_log_follow(){
+function _ak_log_follow(){
tail -f $AK_LOGSFILE | while read -r p || [ -n "$p" ]
do
_ak_log_print_log_line "$p"
done
}
-_ak_log_grep(){
+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
if [ "$1" == "-h" ] || [ "$1" == "--help" ]
@@ -32,7 +97,6 @@ _ak_log_grep(){
exit 1
fi
fi
-
echo "The following scripts have entries in the log file."
echo "Select one of those by entering the number of it below and hit enter:"
select x in $(cat $AK_LOGSFILE | cut -d ' ' -f 2 | sort | uniq)
@@ -45,77 +109,92 @@ _ak_log_grep(){
done
}
-_ak_log_rotate(){
+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
}
-_ak_log_message(){
- TS="$(date -u +%s)"
+function _ak_log_message(){
+ 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
- exit 1
+ 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
- exit 1
+ 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
fi
- exit 1
+ return 1
fi
}
-_ak_log_exit(){
- _ak_log_message "$PROGRAM" "EXIT" "$1"
+function _ak_log_exit(){
+ _ak_log_message "$PROGRAM" "EXIT" "$*"
}
-_ak_log_warning(){
- _ak_log_message "$PROGRAM" "WARNING" "$1"
+function _ak_log_warning(){
+ _ak_log_message "$PROGRAM" "WARNING" "$*"
}
-_ak_log_debug(){
- _ak_log_message "$PROGRAM" "DEBUG" "$1"
+function _ak_log_debug(){
+ _ak_log_message "$PROGRAM" "DEBUG" "$*"
}
-_ak_log_error(){
- _ak_log_message "$PROGRAM" "ERROR" "$1"
+function _ak_log_error(){
+ _ak_log_message "$PROGRAM" "ERROR" "$*"
}
-_ak_log_info(){
- _ak_log_message "$PROGRAM" "INFO" "$1"
+function _ak_log_info(){
+ _ak_log_message "$PROGRAM" "INFO" "$*"
}
+# _ak_log_debug "_ak_log loaded $(caller)"
# vim: set syntax=bash