Гибкое логирование в Bash через функции-обёртки

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashлогированиескрипты

ℹ️ Когда пишете сложные 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

Скриншот тёмного терминала с примером Bash-кода: функции-обёртки для логирования (log_info, log_warn, log_error) и переменная LOG_LEVEL.
Пример кода с функциями-обёртками для логирования в Bash.

Читайте так же