a48e01dbf04dc150c33a8a2312971a3a114a76c3
[osm/devops.git] / common / logging
1 #!/bin/bash
2 # This file is meant to be SOURCED
3 #
4 #   Copyright 2016 RIFT.IO Inc
5 #
6 #   Licensed under the Apache License, Version 2.0 (the "License");
7 #   you may not use this file except in compliance with the License.
8 #   You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #   Unless required by applicable law or agreed to in writing, software
13 #   distributed under the License is distributed on an "AS IS" BASIS,
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #   See the License for the specific language governing permissions and
16 #   limitations under the License.
17 #
18 # container_funcs
19 # 24 June 2016 -- Jeremy Mordkoff -- Genesis
20
21 print_stack() {
22    local i
23    local stack_size=${#FUNCNAME[1]}
24    echo  "BACKTRACE:" >&2
25    for (( i=1; i<$stack_size ; i++ )); do
26       local func="${FUNCNAME[$i]}"
27       [ x$func = x ] && func=MAIN
28       local linen="${BASH_LINENO[(( i - 1 ))]}"
29       local src="${BASH_SOURCE[$i]}"
30       [ x"$src" = x ] && src=non_file_source
31       echo "### $func $src $linen" >&2
32    done
33    echo "-------" >&2
34 }
35
36
37 FATAL() { 
38         echo -e "\n### $(date) ${FUNCNAME[1]}: FATAL error: $*" >&2
39         print_stack
40         exit 1
41 }
42         
43 WARNING() { 
44         echo -e "\n### $(date) ${FUNCNAME[1]}: WARNING error: $*" >&2
45 }
46
47 INFO() { 
48         echo "##  $(date) ${FUNCNAME[1]}: INFO: $*" >&2
49 }
50
51 DEBUG() { 
52         echo "#   $(date) ${FUNCNAME[1]}: DEBUG: $*" >&2
53 }
54
55 CMD() {
56         echo "# executing '$*' ..."
57         "$@"
58         rc=$?
59         echo "# .... '$*' done RC was $rc"
60         return $rc
61 }