Only write debug messages to log file when LOG_LEVEL=debug

Info, warn, and error always go to the log file. Debug messages
are only written to the file when LOG_LEVEL is set to debug,
preventing verbose output in logs at higher levels.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-05 18:57:35 +02:00
parent 2cf0a8866c
commit efcd4844e9

View File

@@ -33,13 +33,18 @@ _log() {
local upper; upper=$(echo "$level" | tr '[:lower:]' '[:upper:]')
local line="[$ts] [$upper] $msg"
# Always write to log file if initialized (regardless of LOG_LEVEL)
[[ -n "$LOG_FILE" ]] && echo "$line" >> "$LOG_FILE"
# Print to stderr only if level meets configured threshold
local configured_level="${LOG_LEVEL:-$DEFAULT_LOG_LEVEL}"
local level_num; level_num=$(_log_level_num "$level")
local configured_num; configured_num=$(_log_level_num "$configured_level")
# Log file: always write info/warn/error; debug only when LOG_LEVEL=debug
if [[ -n "$LOG_FILE" ]]; then
if [[ "$level" != "debug" ]] || (( level_num >= configured_num )); then
echo "$line" >> "$LOG_FILE"
fi
fi
# Console: only print if level meets configured threshold
(( level_num < configured_num )) && return 0
case "$level" in