A logging helper can select how much detail to write while keeping the output format stable for readers and tools.

Program

Play the script to choose the log level and see the resulting log line.

level
log_level_line.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash

level="info"
case "$level" in
    info) message="service ready" ;;
    debug) message="cache warmed" ;;
esac
line="$level:$message"
echo "$line"
#!/usr/bin/env bash

level="debug"
case "$level" in
    info) message="service ready" ;;
    debug) message="cache warmed" ;;
esac
line="$level:$message"
echo "$line"
  1. level ← info

    3level="info"4case "$level" in
    values this stepinfolevel
  2. case "$level" in

    3level="info"4case "$level" in5    info) message="service ready" ;;
    values this stepinfolevel
  3. message ← service ready

    4case "$level" in5    info) message="service ready" ;;6    debug) message="cache warmed" ;;
    values this stepservice readymessage
  4. line ← info:service ready

    7esac8line="$level:$message"9echo "$line"
    values this stepinfo:service readylineinfolevelservice readymessage
  5. echo "$line"

    8line="$level:$message"9echo "$line"
    outputinfo:service ready
    values this stepinfo:service readyline
  1. level ← debug

    3level="debug"4case "$level" in
    values this stepdebuglevel
  2. case "$level" in

    3level="debug"4case "$level" in5    info) message="service ready" ;;
    values this stepdebuglevel
  3. message ← cache warmed

    5    info) message="service ready" ;;6    debug) message="cache warmed" ;;7esac
    values this stepcache warmedmessage
  4. line ← debug:cache warmed

    7esac8line="$level:$message"9echo "$line"
    values this stepdebug:cache warmedlinedebuglevelcache warmedmessage
  5. echo "$line"

    8line="$level:$message"9echo "$line"
    outputdebug:cache warmed
    values this stepdebug:cache warmedline
log level The log level names how detailed the message is.
stable format A stable log shape is easier to search and parse.
message The message carries the human-readable event detail.