diff options
Diffstat (limited to 'lib/_ak_log')
-rwxr-xr-x | lib/_ak_log | 153 |
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 |