-
-
Save goodmami/6556701 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
## | |
## Simple logging mechanism for Bash | |
## | |
## Author: Michael Wayne Goodman <goodman.m.w@gmail.com> | |
## Thanks: Jul for the idea to add a datestring. See: | |
## http://www.goodmami.org/2011/07/simple-logging-in-bash-scripts/#comment-5854 | |
## Thanks: @gffhcks for noting that inf() and debug() should be swapped, | |
## and that critical() used $2 instead of $1 | |
## | |
## License: Public domain; do as you wish | |
## | |
exec 3>&2 # logging stream (file descriptor 3) defaults to STDERR | |
verbosity=3 # default to show warnings | |
silent_lvl=0 | |
crt_lvl=1 | |
err_lvl=2 | |
wrn_lvl=3 | |
inf_lvl=4 | |
dbg_lvl=5 | |
notify() { log $silent_lvl "NOTE: $1"; } # Always prints | |
critical() { log $crt_lvl "CRITICAL: $1"; } | |
error() { log $err_lvl "ERROR: $1"; } | |
warn() { log $wrn_lvl "WARNING: $1"; } | |
inf() { log $inf_lvl "INFO: $1"; } # "info" is already a command | |
debug() { log $dbg_lvl "DEBUG: $1"; } | |
log() { | |
if [ $verbosity -ge $1 ]; then | |
datestring=`date +'%Y-%m-%d %H:%M:%S'` | |
# Expand escaped characters, wrap at 70 chars, indent wrapped lines | |
echo -e "$datestring $2" | fold -w70 -s | sed '2~1s/^/ /' >&3 | |
fi | |
} |
Shouldn't "debug" be at a higher level of verbosity than "info"?
Also, why does $2 get used instead of $1 for critical()?
@gffhcks, sorry to be so late to respond. I didn't get any notification for your comment.
And thanks for pointing these out. Debug and Info are in the unconventional order because I didn't closely check with what other logging frameworks do. I'm not sure why I used $2
in critical()
; that's just a bug. I'll fix both of these.
Hello, what does this statement means: sed '2~1s/^/ /'
?
@MapleLove2014, that indents the wrapped lines. 2~1
means to perform the following operation on every line starting from the 2nd (every 1 line after line 2), then s/^/ /
is a substitution operation that matches the beginning of each line (^
) and inserts two spaces. In a terminal you might try man sed
to get more info about the command.
Ive used this extensively and made some modifications - tell me what you think! https://github.com/p1r473/zsh-color-logging
@p1r473 glad you found it useful! The colors in your version are a nice touch
To make the above working example, append the following to the bottom of the file: