Skip to content

Используйте эту настройку, если нужно хранить access-логи на диске и автоматически ротировать их.

Настройка

Шаг 1: Создайте директорию для логов

bash
  mkdir -p logs
  sudo chmod 777 logs

Шаг 2: Добавьте volume в compose.yaml

В секции bot добавьте:

yaml
volumes:
  - ./translations:/translations
  - ./uploads:/uploads
  - ./logs:/logs

Шаг 3: Укажите путь к логам в .env

bash
  ACCESS_LOG_PATH=/logs/access.log

Шаг 4: Перезапустите бота

bash
  docker compose up -d

Шаг 5: Установите logrotate

(если не установлен)

bash
# Debian/Ubuntu
sudo apt update && sudo apt install -y logrotate

# CentOS/RHEL/Fedora
sudo dnf install -y logrotate

Шаг 6: Создайте конфиг logrotate

bash
  sudo nano /etc/logrotate.d/rwp-shop
txt
/opt/rwp-shop/logs/access.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

Примечание

Замените путь /opt/rwp-shop/logs/access.log на ваш фактический путь установки.

Шаг 7: Проверьте конфигурацию

bash
  sudo logrotate -d /etc/logrotate.d/rwp-shop

Флаг -d запускает в debug-режиме без реальной ротации.

Шаг 8: Тестовый запуск ротации

bash
  sudo logrotate -f /etc/logrotate.d/rwp-shop

Флаг -f принудительно выполняет ротацию.

Совет

copytruncate позволяет ротировать логи без перезапуска контейнера — файл обрезается на месте после копирования.

Примечание

Автоматический запуск Logrotate обычно запускается автоматически через cron или systemd timer (ежедневно). Проверить можно:

bash
# Для systemd
systemctl status logrotate.timer

# Для cron
cat /etc/cron.daily/logrotate
ПараметрОписание
dailyРотация раз в день
rotate 14Хранить 14 архивов
compressСжимать архивы gzip
delaycompressСжимать со второго архива
missingokНе ругаться если файла нет
notifemptyНе ротировать пустой файл
copytruncateКопировать и обрезать без перезапуска