Advertisement
mogra

logger.sh

Jan 13th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 0.69 KB | None | 0 0
  1. #!/bin/bash
  2. declare -A levels=([DEBUG]=10 [INFO]=20 [WARN]=30 [ERROR]=40)
  3. if [[ ${levels[${__loglevel}]+isset} ]];then
  4.   __loglevel=${levels[${__loglevel}]}
  5. elif [[ "${__loglevel}" =~ ^[0-9]+$ ]];then
  6.   :
  7. else
  8.   __loglevel=${levels['INFO']}
  9. fi
  10.  
  11. log() {
  12.   __level=${1:-INFO}
  13.   while IFS= read -r line; do
  14.     if [[ ${levels[${__level}]} < ${__loglevel} ]];then
  15.       :
  16.     else
  17.       printf '%(%F %T %Z)T [%s] %s: %s\n' "-1" "$$" "${__level}" "${line}" >> ${__log:-/dev/null}
  18.     fi
  19.   done
  20. }
  21.  
  22. # Setup outputs:
  23. # 1 = LOG
  24. # 2 = ERROR
  25. # 3 = New STDOUT, for outputting to user
  26. # 4 = New STDERR, for outputting to user
  27. # 5 = DEBUG
  28. exec 3>&1 4>&2 5> >(log DEBUG) 1> >(log) 2> >(log ERROR)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement