aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/ak-log43
-rwxr-xr-xlib/_ak_log91
2 files changed, 134 insertions, 0 deletions
diff --git a/bin/ak-log b/bin/ak-log
new file mode 100755
index 0000000..d22da70
--- /dev/null
+++ b/bin/ak-log
@@ -0,0 +1,43 @@
+#!/bin/bash
+##
+## Used to overview, archive or append to the log file
+##
+## Usage:
+##
+## -h, --help Prints this help message
+##
+## -f, --follow Follows the log file as its appended with new
+## messages
+##
+## -m, --message <program> <type> <message>
+## Adds a log message to the log
+##
+## -r, --rotate Cleans up log files after archiving them
+##
+## -g, --grep Select a script to view only logs from that
+##
+fullprogrampath="$(realpath $0)"
+PROGRAM=$(basename $0)
+descriptionString="Log file handler"
+
+# At least these
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_script
+
+# Your stuff here...
+example(){
+ echo "Example"
+}
+
+# Flags to run
+if [ ! -z $1 ]; then
+ case $1 in
+ -h | --help) _ak_usage; exit;;
+ -f | --follow) _ak_log_follow; exit;;
+ -g | --grep) _ak_log_grep; exit;;
+ -m | --message) shift; _ak_log_message $*; exit;;
+ -r | --rotate) _ak_log_rotate; exit;;
+ * ) _ak_usage;;
+ esac
+else _ak_usage
+fi
diff --git a/lib/_ak_log b/lib/_ak_log
index 6a55f5f..e06051b 100755
--- a/lib/_ak_log
+++ b/lib/_ak_log
@@ -3,3 +3,94 @@
logit(){
ak-log-message "$PROGRAM" "$1" "$2"
}
+
+_ak_log_follow(){
+ tail -f $AK_LOGSFILE | while read -r p || [ -n "$p" ]
+ do
+ timestamp="$(echo "$p" | awk '{print $1}')"
+ program="$(echo "$p" | awk '{print $2}')"
+ messagetype="$(echo "$p" | awk '{print $3}')"
+ message="$(echo "$p" | 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"
+ 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
+ break
+ done
+}
+
+_ak_log_rotate(){
+ tar cvfz $AK_ARCHIVESDIR/logs_$(date -u +%s).tar.gz $AK_WORKDIR/akd.log $AK_WORKDIR/akd.err $AK_WORKDIR/logs
+
+ cat /dev/null > $AK_WORKDIR/akd.log
+ cat /dev/null > $AK_WORKDIR/akd.err
+ cat /dev/null > $AK_WORKDIR/logs
+}
+
+_ak_log_message(){
+ PROGRAM="$(basename $0)"
+ TS="$(date -u +%s)"
+ if [ ! -z $1 ] && [ -n "$1" ]
+ then
+ if [ "$1" == "-h" ] || [ "$1" == "--help" ]
+ then
+ echo "$PROGRAM - Log events"
+ echo "-h, --help Prints this message"
+ echo "<program> <type> <message> Logs this message"
+ exit 0
+ fi
+ if [ ! -z "$2" ] && [ -n "$2" ]
+ then
+ if [ ! -z "$3" ] && [ -n "$3" ]
+ then
+ echo "$TS" "<$1>" "[$2]" "$3" >> $AK_LOGSFILE
+ if [ "$AK_DEBUG" == "yes" ]
+ then
+ echo "$TS" "<$1>" "[$2]" "$3" >&2
+ fi
+ exit 0
+ 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
+}