ℹ️ Когда пишете сложные Bash-скрипты, важно поддерживать чистоту и читабельность логов. Вместо того чтобы хаотично вставлять echo или printf, можно использовать функции-обёртки для разных уровней логирования (info, warn, error). Такой подход делает логи более информативными и позволяет гибко управлять выводом.
👨💻 Пример:
#!/bin/bash
LOG_LEVEL=2 # 1 - ERROR, 2 - WARN, 3 - INFO
log() {
local level="$1"
local message="$2"
local color="$3"
local reset="\033[0m"
case $level in
INFO) [ $LOG_LEVEL -ge 3 ] && echo -e "${color}[INFO] ${message}${reset}" ;;
WARN) [ $LOG_LEVEL -ge 2 ] && echo -e "${color}[WARN] ${message}${reset}" ;;
ERROR) [ $LOG_LEVEL -ge 1 ] && echo -e "${color}[ERROR] ${message}${reset}" ;;
esac
}
log_info() {
log "INFO" "$1" "\033[1;34m" # Синий
}
log_warn() {
log "WARN" "$1" "\033[1;33m" # Желтый
}
log_error() {
log "ERROR" "$1" "\033[1;31m" # Красный
}
❔ Как использовать:
log_info "Начало выполнения скрипта"
log_warn "Диск почти заполнен"
log_error "Не удалось подключиться к базе данных"
🔥 Преимущества:
- ⁃ Единообразие: все логи имеют понятный формат.
- ⁃ Гибкость: можно управлять уровнем логирования с помощью переменной
LOG_LEVEL. - ⁃ Цветное форматирование: улучшает читаемость, особенно при мониторинге скриптов в реальном времени.
- ⁃ Масштабируемость: можно легко добавить другие уровни логирования, например DEBUG или TRACE.
📱 Если скрипт выполняется как часть CI/CD пайплайна, можно автоматически переключать уровень логирования в зависимости от переменной окружения:
LOG_LEVEL=${CI_LOG_LEVEL:-2}
ℹ️ Такой подход позволяет переключаться между подробным и минимальным логированием в зависимости от этапа пайплайна.
✳️ Полезно для автоматизации, DevOps и написания скриптов с критически важными процессами.
tags: #полезно #bash #linux
🧭 @recura_tech



