#!/usr/bin/env bash _ak_log_print_log_line(){ if [ -n "$1" ] then timestamp="$(echo "$*" | awk '{print $1}')" program="$(echo "$*" | awk '{print $2}')" 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)" \ "$program" \ "$messagetype" \ "$message" fi } _ak_log_follow(){ tail -f $AK_LOGSFILE | while read -r p || [ -n "$p" ] do _ak_log_print_log_line "$p" done } _ak_log_grep(){ if [ ! -z $1 ] && [ -n "$1" ] then if [ "$1" == "-h" ] || [ "$1" == "--help" ] then description echo "Launch with no arguments and select from the menu that will appear" 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) do grep $x $AK_LOGSFILE | while read line do _ak_log_print_log_line "$line" done break done } _ak_log_rotate(){ if [ -f $AK_LOGSFILE ] then tar cvfz $AK_ARCHIVESDIR/logs_$(date -u +%s).tar.gz $AK_WORKDIR/logs cat /dev/null > $AK_WORKDIR/logs fi if [ -f $AK_WORKDIR/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 fi } _ak_log_message(){ TS="$(date -u +%s)" if [ ! -z $1 ] && [ -n "$1" ] then if [ ! -z "$2" ] && [ -n "$2" ] then if [ ! -z "$3" ] && [ -n "$3" ] then msg="$(echo -n $*| cut -d ' ' -f 3-)" echo "$TS" "<$1>" "[$2]" "$msg" >> $AK_LOGSFILE if [ ! -z $AK_DEBUG ] && [ -n "$AK_DEBUG" ] && [ "$AK_DEBUG" == "yes" ] then _ak_log_print_log_line "$TS <$1> [$2] $msg" >&2 fi else echo "$TS" "<$1>" "[ERROR]" "No message" >> $AK_LOGSFILE if [ "$AK_DEBUG" == "yes" ] then echo "$TS" "<$1>" "[ERROR]" "No message" >&2 fi exit 1 fi else echo "$TS" "<$1>" "[ERROR]" "No type and message" >> $AK_LOGSFILE if [ "$AK_DEBUG" == "yes" ] then echo "$TS" "<$1>" "[ERROR]" "No type and message" >&2 fi exit 1 fi else echo "$TS" "<$(basename $0)>" "[ERROR]" "No arguments given" >> $AK_LOGSFILE if [ "$AK_DEBUG" == "yes" ] then echo "$TS" "<$(basename $0)>" "[ERROR]" "No arguments given" >&2 fi exit 1 fi } _ak_log_exit(){ _ak_log_message "$PROGRAM" "EXIT" "$1" } _ak_log_warning(){ _ak_log_message "$PROGRAM" "WARNING" "$1" } _ak_log_debug(){ _ak_log_message "$PROGRAM" "DEBUG" "$1" } _ak_log_error(){ _ak_log_message "$PROGRAM" "ERROR" "$1" } _ak_log_info(){ _ak_log_message "$PROGRAM" "INFO" "$1" } # vim: set syntax=bash