script debugger debug code app python django debugging django-views

debugger - pdb debug python



¿Cómo uso el registro en la barra de herramientas Dyango Debug? (3)

El registro directo al registrador raíz, como se menciona en @ jonwd7, generalmente no se recomienda. En general estoy siguiendo este patrón:

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

Esto le permite tener un control mucho más preciso sobre qué mensajes de registro se muestran y cuáles no. Desafortunadamente, al utilizarlo de esta forma, la barra de herramientas de depuración de django no capturará ningún mensaje de registro a menos que especifique una configuración de registro específica. Aquí está el más simple que pude encontrar:

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

Establecer "incremental" y "disable_existing_loggers" son importantes para que no deshabilite el controlador de la barra de herramientas asociada al registrador de raíz. Todo lo que quiere hacer es establecer el nivel de registro del registrador de raíz en "DEPURAR". También puede usar la entrada "registradores" para establecer niveles para registradores específicos. Simplemente omita la sección "Controladores" y configure "propagar": Verdadero para que sean capturados por el manejador DjDT.

Me gustaría generar mensajes de depuración en mi aplicación django en diferentes puntos de una función de vista. Los documentos para la django-debug-toolbar dicen que usa la compilación en el registro de Python, pero no puedo encontrar más información que eso. Realmente no quiero iniciar sesión en un archivo sino en el panel de información en la barra de herramientas. ¿Como funciona esto?


Si tiene una configuración de REGISTRO existente, y no quiere estropearlo cambiando a ''incremental'', necesitará volver a agregar el registro de DjDT como controlador y luego agregarlo a la lista de registradores de raíz del registrador manejadores.

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''], }, }

Si hay una manera más limpia de hacerlo, me encantaría verlo.


Simplemente usa los métodos del módulo de registro y DjDT los interceptará y mostrará en el Panel de registro.

import logging logging.debug(''Debug Message'') if some_error: logging.error(''Error Message'')