Пусть первый бросил камень, который не использовал оператор печати для отладки и забыл удалить его после! Что, если я скажу вам, что вы можете построить систему «Печать» во время разработки? Установка входа в Django довольно просто. Я подвел Django Документы о регистрации в виде быстрой фрагмента. Есть несколько идей для ведения журналов, которые помогут мне много. Надеюсь, вы найдете ее полезной.
Быстрая установка
Перейти к себе settings.py
и подготовить Регистрация
обдумывать Это базовая конфигурация, которую вы, вероятно, увидите в вашей консоли.
LOGGING = { "version": 1, "disable_existing_loggers": False, "handlers": { "console": {"class": "logging.StreamHandler"}, }, "loggers": { "django": { "handlers": ["console"], "level": "INFO", }, } }
Чтобы добавить некоторые журналы в вашей консоли.
import logging logger = logging.getLogger('django') logger.info('here goes your message')
Входные данные
Это наша точка входа в журнал. Он состоит из обработчика регистратора, с какой-то конфигурацией и т. Д. Получите экземпляр этого с помощью метода «logging.getLogger (name)». Чтобы добавить журнал, который вам необходимо выбрать один из следующих уровней журнала.
- ОТЛАЖИВАТЬ
- ИНФОРМАЦИЯ
- ПРЕДУПРЕЖДЕНИЕ
- ОШИБКА
- Критический
Все эти уровни представлены как метод вашего экземпляра регистратора. Например, «logger.crication (« сообщение ») ‘будет добавлять журнал с критическим уровнем.
Обработчики
Таким образом, обработчики являются следующим шагом в процессе регистрации. Когда мы определяем регистратор в настройках .py, мы прикрепляем список обработчиков к нему. Художники в основном некоторые механизируют, чтобы справиться с нашими бревнами. В приведенном выше упражнении я определил обработчик консоли для записи журналов в консоль. Вы можете определить несколько обработчиков для регистраторов. С помощью ниже конфигурации журналы Django тоже будут сохранены в файл.
LOGGING = { "version": 1, "disable_existing_loggers": False, "handlers": { "console": {"class": "logging.StreamHandler"}, "file": { "level": "INFO", "class": "logging.FileHandler", "filename": "logs/platform.log", }, }, "loggers": { "django": { "handlers": ["console", "file"], "level": "INFO", }, } }
Форматтеры
Эта часть используется только для форматирования сообщений журнала. Поскольку эти журналы основы на встроенном встроенном модулях Python, вы можете использовать его атрибуты Отказ С этой конфигурацией мои журналы будут напечатаны на консоль с коротким формой и файлом с некоторыми дополнительными деталями.
LOGGING = { "version": 1, "disable_existing_loggers": False, "formatters": { "verbose": { "format": "{levelname} {asctime} {module} || {message}", "style": "{", }, "simple": { "format": "{levelname} {message}", "style": "{", }, }, "handlers": { "console": {"class": "logging.StreamHandler","formatter": "verbose",}, "file": { "formatter": "verbose", "class": "logging.FileHandler", "filename": "logs/platform.log", }, }, "loggers": { "django": { "handlers": ["console", "file"], "level": "INFO", }, } }
Фильтры
Фильтры прикреплены к обработчикам. Например, вы можете фильтровать журналы с отладкой на уровне, которая будет напечатана на консоль. Определение вашего собственного фильтра также возможен.
LOGGING = { "version": 1, "disable_existing_loggers": False, "filters" : { "debug_only" : { "()" : "django.utils.log.RequireDebugTrue", }, }, "handlers": { "console": {"class": "logging.StreamHandler"}, "file": { "filters": ["debug_only"], "class": "logging.FileHandler", "filename": "logs/platform.log", }, }, "loggers": { "django": { "handlers": ["console", "file"], "level": "INFO", }, } }
Django встроенные логики и обработчики
Есть несколько Django Loggers и обработчики что вы можете использовать. Рассмотреть их вместо того, чтобы построить свой собственный.
Некоторые идеи обработчика
- Я сделал отдельный регистратор для событий. Каждый раз, когда есть событие размещено, это помогает мне отслеживать порядок событий в системе. В конце концов, вы можете создать какой-то спецификацию потока событий с ним.
- Если ваше приложение использует некоторые API, вы можете добавить регистратор в классе, где обрабатываются запросы. Просто отслеживайте каждый запрос в отдельном файле.
- Подготовьте обработчик для критических ошибок. Может быть, отправить их по электронной почте администратору?
- На мой последний проект я посылал много электронных писем. Вы можете сделать отдельный файл с адресатом и заголовому сообщению.
Первоначально опубликовано здесь Отказ
Оригинал: “https://dev.to/kuba_szw/django-logging-forget-about-print-when-debugging-3g11”