Рубрики
Без рубрики

Регистрация Django – забыть о «печати» при отладке

Пусть первый бросил камень, который не использовал оператор печати для отладки и забыл удалить его … с меткой Django, Python, Logging, фрагмент.

Пусть первый бросил камень, который не использовал оператор печати для отладки и забыл удалить его после! Что, если я скажу вам, что вы можете построить систему «Печать» во время разработки? Установка входа в 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”