Этот документ подробно объясняет функцию логирования `log()`, используемую в bash скриптах для ведения журнала работы скрипта.

Определение функции `log()`

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
  }

Функция `log()` предназначена для записи отчетов о событиях, происходящих во время работы скрипта, в текстовый файл, называемый файлом журнала (логи).

Разбор строки функции построчно

Рассмотрим строку функции построчно:

  1. `log() { ... }`: Это определение функции с именем `log`. Все, что находится внутри фигурных скобок `{ ... }`, является телом функции.
  2. `echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"`: Это основная часть, которая генерирует строку для записи в лог.
    • `echo`: Команда `echo` выводит текст на стандартный вывод.
    • `$(date '+%Y-%m-%d %H:%M:%S')`: Это подстановка команды. Команда `date` вызывается и ее вывод подставляется в строку. `'+%Y-%m-%d %H:%M:%S'` - это форматный аргумент для команды `date`, указывающий, как должна выглядеть дата и время.
      • `%Y`: Год (четыре цифры)
      • `%m`: Месяц (две цифры)
      • `%d`: День (две цифры)
      • `%H`: Час (24-часовой формат)
      • `%M`: Минута
      • `%S`: Секунда
      Таким образом, эта часть генерирует строку, содержащую текущую дату и время в формате, например: `2023-10-27 10:30:45`.
    • `-`: Простой разделитель между датой/временем и сообщением.
    • `$1`: Это первый аргумент, переданный функции `log()`. Когда вы вызываете `log("Сообщение")`, `$1` будет содержать строку "Сообщение".
  3. `>> "$LOG_FILE"`: Это перенаправление вывода команды `echo` в файл.
    • `>>`: Оператор перенаправления вывода, который добавляет вывод команды в конец существующего файла. Если файл не существует, он будет создан.
    • `"$LOG_FILE"`: Это переменная окружения, содержащая путь к файлу журнала.

Пример использования

LOG_FILE="/var/log/delete_files.log"

log "Скрипт запущен"
delete_some_files
log "Скрипт завершен успешно"

Результат в файле `/var/log/delete_files.log`:

2023-10-27 10:30:45 - Скрипт запущен
2023-10-27 10:30:45 - Скрипт завершен успешно

Ключевые моменты

  • Удобство: Функция `log()` упрощает запись сообщений в лог.
  • Консистентность: Форматирование даты и времени всегда одинаково.
  • Передаваемые данные: Вы можете передавать любые сообщения в функцию `log()`.
  • Файл журнала: Логи хранятся в файле, который можно просматривать и анализировать.

Почему это полезно для скрипта удаления файлов?

  • Отслеживание: Можно увидеть, какие файлы были удалены, когда и почему.
  • Диагностика: Если скрипт падает или работает неправильно, логи помогут понять, что пошло не так.
  • Аудит: Логи могут служить для аудита действий, выполненных скриптом.
  • Устранение неполадок: Если удаление файлов приводит к неожиданным последствиям, логи могут помочь проследить путь и найти причину.

Таким образом, функция `log()` является важным инструментом для обеспечения надежности, удобства и отслеживаемости работы скрипта удаления файлов.

Вернуться к верху