lib/update.log
author Tero Marttila <terom@paivola.fi>
Sun, 22 Dec 2013 15:33:32 +0200
changeset 98 a3734856e0fa
parent 90 5b33ccac38ad
permissions -rw-r--r--
use hosts/dhcp/%** to create dhcp hosts configs
82
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/bin/bash
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
# vim: set ft=sh :
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
#
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
# Logging output
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
# Output message to stderr.
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
function log_msg {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
    echo "$*" >&2
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
# Output message to stderr, optionally with given color, if TTY.
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
function log_color {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
    local code=$1; shift
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    if [ $IS_TTY ]; then
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
        echo $'\e['${code}'m'"$*"$'\e[00m' >&2
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
    else
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
        echo "$*" >&2
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    fi
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
## Log at various log-levels
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
# plain
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
function log {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
    [ $LOG          ] && log_msg            "$*"            || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
function log_error {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
    [ $LOG_ERROR    ] && log_color '31'     "$*"            || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
function log_warn {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
    [ $LOG_WARN     ] && log_color '33'     "$*"            || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
function log_force {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
    [ $LOG_FORCE    ] && log_color '2;33'   "  $*"          || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
function log_update {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
    [ $LOG_UPDATE   ] && log_color '36'     "  $*"          || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
90
5b33ccac38ad update_zone --include-path, log_check
Tero Marttila <terom@paivola.fi>
parents: 85
diff changeset
    44
function log_check {
5b33ccac38ad update_zone --include-path, log_check
Tero Marttila <terom@paivola.fi>
parents: 85
diff changeset
    45
    [ $LOG_UPDATE   ] && log_color '37'     "  $*"          || true
5b33ccac38ad update_zone --include-path, log_check
Tero Marttila <terom@paivola.fi>
parents: 85
diff changeset
    46
}
5b33ccac38ad update_zone --include-path, log_check
Tero Marttila <terom@paivola.fi>
parents: 85
diff changeset
    47
82
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
function log_noop {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
    [ $LOG_NOOP     ] && log_color '2;34'   "  $*"          || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
function log_skip {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
    [ $LOG_SKIP     ] && log_color '1;34'   "  $*"          || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
function log_debug {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
    [ $LOG_DEBUG    ] && log_color '32'     "    $*"        || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
function log_cmd {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
    [ $LOG_CMD      ] && log_color '35'     "        \$ $*" || true
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
# Output stacktrace, broken.
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
function log_stack {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
    local level=1
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
    while info=$(caller $level); do
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
        echo $info | read line sub file
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
        log_msg "$file:$lineno $sub()"
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
        level=$(($level + 1))
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
    done
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
# Output calling function's name.
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
function func_caller {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
    caller 1 | cut -d ' ' -f 2
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
### High-level logging output
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
# Log with func_caller at log_debug
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
function debug {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
    printf -v prefix "%s" $(func_caller)
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
    log_debug "$prefix: $*"
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
85
4ad9c9b7cd0e update: many things
Tero Marttila <terom@paivola.fi>
parents: 82
diff changeset
    90
function warn {
4ad9c9b7cd0e update: many things
Tero Marttila <terom@paivola.fi>
parents: 82
diff changeset
    91
    log_warn "$(func_caller): $*"
4ad9c9b7cd0e update: many things
Tero Marttila <terom@paivola.fi>
parents: 82
diff changeset
    92
}
4ad9c9b7cd0e update: many things
Tero Marttila <terom@paivola.fi>
parents: 82
diff changeset
    93
82
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    94
# Log with func_caller at log_error and exit, intended for internal errors...
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    95
function fail {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
    log_error "$(func_caller): $*"
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    98
    exit 2
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   101
# Log at log_error and exit
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   102
function die {
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
    log_error "$*"
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   104
    exit 1
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   105
}
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   106
26a307558602 update update
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107