Настройка логирования Django и Celery с помощью модуля RotatingFileHandler включает несколько шагов. Вот подробный шаг за шагом инструкция:
Шаг 1: Установка необходимых модулей
Убедитесь, что у вас установлены следующие модули:
- Django: pip install Django
- Celery: pip install Celery
Шаг 2: Создание конфигурации логирования в Django
Откройте файл settings.py в корневой директории вашего проекта Django и добавьте следующий код:
import logging import os # Определяем путь к файлу лога LOGS_DIR = os.path.join(BASE_DIR, 'logs') os.makedirs(LOGS_DIR, exist_ok=True) LOG_FILE = os.path.join(LOGS_DIR, 'django.log') LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'default': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': LOG_FILE, 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, }, }, 'loggers': { 'django': { 'handlers': ['default'], 'level': 'DEBUG', 'propagate': True, }, }, }
В этом коде мы определяем путь к файлу лога (django.log), максимальный размер файла в байтах (5 MB) и количество резервных копий (5).
Шаг 3: Настройка логирования в Celery
Откройте файл celery.py (или tasks.py, если у вас весь код Celery в tasks.py) и добавьте следующий код:
import logging from celery import Celery app = Celery('mycelery', broker_url='your_broker_url', include=['mycelery.tasks']) # Логирование в Celery app.log.setup(logfile='celery.log', format='%(asctime)s [%(levelname)s] %(message)s', level=logging.DEBUG)
В этом коде мы настраиваем логирование в Celery, указывая путь к файлу лога (celery.log), формат записи лога и уровень логирования (DEBUG).
Шаг 4: Добавление логирования в код Django и Celery
Теперь вы можете добавить логирование в свой код Django и Celery, используя стандартный модуль Python для логирования. Например, в вашем коде Django вы можете добавить следующий код, чтобы зарегистрировать информацию в журнале:
import logging logger = logging.getLogger(__name__) def my_view(request): logger.info('This is an info message.')
В коде Celery вы можете добавить логирование аналогичным образом:
import logging from mycelery import app logger = logging.getLogger(__name__) @app.task def my_task(): logger.info('This is an info message.')
Шаг 5: Просмотр логов
Теперь, когда вы всё настроили, логи будут записываться в файлы django.log и celery.log. Вы можете найти эти файлы в папке logs в корневой директории вашего проекта Django.
Конфигурация RotatingFileHandler позволяет автоматически создавать новые файлы, когда текущий файл достигает заданного размера, и хранить ограниченное количество резервных копий для архивирования. Это обеспечивает хранение истории логов и предотвращает их переполнение.
Надеюсь, этот подробный ответ помог вам настроить логирование Django и Celery с использованием RotatingFileHandler. Если у вас возникли дополнительные вопросы, пожалуйста, сообщите мне.