aboutsummaryrefslogtreecommitdiff
path: root/lib/_ak_log
diff options
context:
space:
mode:
Diffstat (limited to 'lib/_ak_log')
-rwxr-xr-xlib/_ak_log106
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