@Sazoks

Как правильно настроить логирование в Django?

Проблема
Есть сервис на DRF, в котором есть некоторое приложение А. В этом приложении есть файл tasks.py с задачами для celery-воркеров. Изначально этот файл был на 500+ строк кода, поэтому я решил декомпонизировать код и разбить его на функции и классы. Все это я перенес в папку services. Но теперь у меня появилась проблема: в этих самых функциях и классах есть места, где мне нужно логировать происходящее. Т.е. получается ситуация, что мне нужно, чтобы логгеры в файле tasks.py и во всех файлах в папке services ссылались на один регистратор, который пишет логи в файл с их ротацией.
Собственно, в этом вся проблема.

Что я пробовал
  1. Создать папку tasks, в которой было три файла: __init__.py, tasks.py и tasks_utils.py. В task_utils.py и были бы все функции и классы, которые я вынес из tasks.py. В __init__.py я создал логгер через logging.getLogger(__name__), который затем импортировал в tasks.py и tasks_utils.py. Но тут появлялась другая проблема - я не знаю, как в таком случае сообщить celery, как искать задачи. Изначально он ищет в папках приложений в файлах tasks.py. Регистрировать вручную каждую таску, привязывая ее к определенному экземпляру Celery, мне показалось костыльным способом. Тем более, что у меня все таски - shared_task.
  2. Пробовал топорно в каждом файле прописывать logging.getLogger(__name__), и в файле settings.py прописывать кучу регистраторов, но это точно костыль. Да и в таком случае логи теряют контекст, что очень плохо.
  3. Пробовал просто ничего не логировать в функциях и классах, которые находятся в папке services и которые используются в tasks.py, а просто выкидывать исключения с сообщением об ошибке, но тут появилось сразу 2 проблемы: во-первых, как быть, если мне нужно записать сообщение INFO-уровня, а во-вторых, опять же кажется очень костыльным то, что функция/класс постоянно будут поднимать ошибки...


Я новичок в логировании, поэтому чувствую, что не понимаю какие-то принципов, оттого и задаюсь таким большим количеством глупых вопросов.
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы