Как использовать ведение журнала на панели инструментов отладки Django? - PullRequest
39 голосов
/ 11 апреля 2010

Я бы хотел выводить отладочные сообщения в моем приложении django в разных точках функции просмотра. Документы для django-debug-toolbar говорят, что она использует сборку в журнале python, но я не могу найти больше информации, чем это. Я не хочу войти в файл, но на информационную панель на панели инструментов. Как это работает?

Ответы [ 3 ]

43 голосов
/ 11 апреля 2010

Вы просто используете методы модуля ведения журнала , и DjDT перехватит их и отобразит на панели ведения журнала.

import logging

logging.debug('Debug Message')

if some_error:
   logging.error('Error Message')
11 голосов
/ 23 июля 2015

Вход непосредственно в корневой логгер, как упоминалось @ jonwd7, обычно не рекомендуется. Обычно я следую этому шаблону:

import logging
logger = logging.getLogger(__name__)
del logging # To prevent accidentally using it

...

logger.debug("Some message")

Это позволяет вам иметь более точный контроль над тем, какие сообщения журнала отображаются и не отображаются. К сожалению, использование этого способа не позволяет панели инструментов отладки django захватывать любые сообщения журнала, если вы не указали конкретную конфигурацию ведения журнала. Вот самый простой вариант, который я смог придумать:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'incremental': True,
    'root': {
        'level': 'DEBUG',
    },
}

Установка «incremental» и «disable_existing_loggers» важна, поэтому вы не отключаете обработчик панели инструментов, прикрепленной к корневому логгеру. Все, что вы хотите сделать, это установить уровень логирования корневого логгера на «DEBUG». Вы также можете использовать запись «регистраторы», чтобы установить уровни для определенных регистраторов. Просто пропустите раздел «Обработчики» и установите «распространение»: True, чтобы они захватывались обработчиком DjDT.

4 голосов
/ 17 января 2018

Если у вас есть существующий параметр конфигурации LOGGING, и вы не хотите испортить его, переключившись на «добавочный», вам нужно будет повторно добавить журнал DjDT в качестве обработчика, а затем добавить его в корневой каталог. список обработчиков логгера.

from debug_toolbar.panels.logging import collector # needed for handler constructor below
LOGGING = {
    # existing options, formatters, loggers, etc
    handlers = {
        # existing handlers
        'djdt_log': {
            'level': 'DEBUG',
            'class': 'debug_toolbar.panels.logging.ThreadTrackingHandler',
            'collector': collector,
        },
    },
    'root': {
        'level': 'DEBUG',
        'handlers': ['djdt_log'],
    },
}

Если есть более чистый способ сделать это, я бы с удовольствием это увидел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...