aboutsummaryrefslogtreecommitdiff
path: root/lib/_ak_log
blob: 7f832d8e8fca6c9e349f2bd08d85ce22977af692 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/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