#!/bin/sh # usage: # > source log.sh # > log INFO "hello" # > log "this is epic" # > log DEBUG "yo" _LOG_CALLER=$(basename "$1") log() { LEVEL=$1 shift case "$LEVEL" in INFO|DEBUG|ERROR) ;; *) set -- "INFO" "$LEVEL" "$@" LEVEL="INFO" ;; esac TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') MESSAGE="$*" if [ "$LEVEL" = "DEBUG" ] && [ -z "$DEBUG" ]; then return fi echo "[$TIMESTAMP] [$_LOG_CALLER] [$LEVEL] $MESSAGE" }