2012-10-11 22 views
5

Al leer la documentación oficial de django no he entendido mucho al respecto. https://docs.djangoproject.com/en/dev/topics/logging/#configuring-loggingHabilite el registro Django también si DEBUG es verdadero

me gustaría habilitar el registro de depuración también si en settings.py se establece en verdadera. Me gustaría que los errores se registren en un archivo.

¿Cómo hacer eso?

Estos son los ajustes por defecto para el registro de Django que actualmente tengo ahora:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     } 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 

PS: estoy usando Apache + mod_wsgi en mi entorno de desarrollo porque el uso de una máquina de desarrollo, que tengo acceso de forma remota en mi LAN, esto significa que no estoy usando el servidor de desarrollo django y no puedo ver los mensajes de registro de la consola.

Respuesta

4

El registro de Django no está deshabilitado por defecto en cualquiera de los modos de DEPURACIÓN a menos que lo haya configurado.

Añadir a continuación a su handlers parte de LOGGING

'file': 
     { 
      'level': 
       'INFO', 
      'class': 
       'logging.FileHandler', 
      'formatter': 
       'verbose', 
      'filename': 
       'myapp.log' 

     } 

Se registrará a myapp.log archivo en la raíz del proyecto. Puede especificar una ruta completa.

y agregue un campo formateadores a la dict registro

'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': 
       '%(levelname)s %(message)s' 
     }, 
    }, 
0

Este es un ejemplo de la configuración de trabajo inspirados en Simple Log to File example for django 1.3+

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     }, 
     'logfile': { 
      'level':'DEBUG', 
      'class':'logging.handlers.RotatingFileHandler', 
      'filename': SITE_ROOT + "/debug.log", 
      'maxBytes': 50000, 
      'backupCount': 2, 
      'formatter': 'custom', 
     }, 
    }, 
    'loggers': { 
     #'django': { 
     # 'handlers':['logfile'], 
     # 'level':'DEBUG', 
     # 'propagate': True, 
     #}, 
     #'django.request': { 
     # 'handlers': ['mail_admins', 'logfile'], 
     # 'level': 'DEBUG', 
     # 'propagate': True, 
     #}, 
     'nodeshot.core.mailing': { 
      'handlers': ['logfile'], 
      'level': 'DEBUG', 
     }, 
    }, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
     'custom': { 
      'format': '%(levelname)s %(asctime)s\n%(message)s' 
     }, 
    }, 
} 
Cuestiones relacionadas