Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- declare -A levels=([DEBUG]=10 [INFO]=20 [WARN]=30 [ERROR]=40)
- if [[ ${levels[${__loglevel}]+isset} ]];then
- __loglevel=${levels[${__loglevel}]}
- elif [[ "${__loglevel}" =~ ^[0-9]+$ ]];then
- :
- else
- __loglevel=${levels['INFO']}
- fi
- log() {
- __level=${1:-INFO}
- while IFS= read -r line; do
- if [[ ${levels[${__level}]} < ${__loglevel} ]];then
- :
- else
- printf '%(%F %T %Z)T [%s] %s: %s\n' "-1" "$$" "${__level}" "${line}" >> ${__log:-/dev/null}
- fi
- done
- }
- # Setup outputs:
- # 1 = LOG
- # 2 = ERROR
- # 3 = New STDOUT, for outputting to user
- # 4 = New STDERR, for outputting to user
- # 5 = DEBUG
- exec 3>&1 4>&2 5> >(log DEBUG) 1> >(log) 2> >(log ERROR)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement