english - documentacion de django
Ejemplo simple de Log to File para django 1.3+ (2)
Las notas de la versión dicen:
Django 1.3 agrega soporte de nivel de marco para el módulo de registro de Python.
Eso es bueno. Me gustaría aprovechar eso. Lamentablemente, la documentación no me lo entrega todo en bandeja de plata en forma de código de ejemplo completo que demuestra cuán simple y valioso es esto.
¿Cómo configuro esta funky nueva función para que pueda refrescar mi código con
logging.debug(''really awesome stuff dude: %s'' % somevar)
y ver el archivo "/tmp/application.log" llenar con
18:31:59 Apr 21 2011 awesome stuff dude: foobar
18:32:00 Apr 21 2011 awesome stuff dude: foobar
18:32:01 Apr 21 2011 awesome stuff dude: foobar
¿Cuál es la diferencia entre el registro predeterminado de Python y este ''soporte de nivel de marco''?
¡Realmente amo tanto esto aquí es tu ejemplo de trabajo! En serio, esto es increíble!
Comience poniendo esto en su settings.py
LOGGING = {
''version'': 1,
''disable_existing_loggers'': True,
''formatters'': {
''standard'': {
''format'' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
''datefmt'' : "%d/%b/%Y %H:%M:%S"
},
},
''handlers'': {
''null'': {
''level'':''DEBUG'',
''class'':''django.utils.log.NullHandler'',
},
''logfile'': {
''level'':''DEBUG'',
''class'':''logging.handlers.RotatingFileHandler'',
''filename'': SITE_ROOT + "/logfile",
''maxBytes'': 50000,
''backupCount'': 2,
''formatter'': ''standard'',
},
''console'':{
''level'':''INFO'',
''class'':''logging.StreamHandler'',
''formatter'': ''standard''
},
},
''loggers'': {
''django'': {
''handlers'':[''console''],
''propagate'': True,
''level'':''WARN'',
},
''django.db.backends'': {
''handlers'': [''console''],
''level'': ''DEBUG'',
''propagate'': False,
},
''MYAPP'': {
''handlers'': [''console'', ''logfile''],
''level'': ''DEBUG'',
},
}
}
Ahora, ¿qué significa todo esto?
- Los formadores me gusta que tengan el mismo estilo que ./manage.py runserver
- Manejadores: quiero dos registros, un archivo de texto de depuración y una consola de información. Esto me permite excavar realmente (si es necesario) y mirar un archivo de texto para ver qué sucede debajo del capó.
- Madereros: aquí es donde definimos lo que queremos registrar. En general, django obtiene WARN y más arriba - la excepción (por lo tanto, propagar) son los backends donde me encanta ver las llamadas SQL, ya que pueden volverse locas. Última es mi aplicación. Tengo dos manejadores y presiono todo para ello.
Ahora, ¿cómo habilito MYAPP para usarlo ...
Según la documentation coloque esto en la parte superior de sus archivos (views.py) ..
import logging
log = logging.getLogger(__name__)
Entonces, para sacar algo, haz esto.
log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")
Los niveles de registro se explican here y para Python puro here .
Basado parcialmente en la configuración de registro sugerida por rh0dium y un poco más de investigación que hice yo mismo, comencé a armar un ejemplo de proyecto de Django con buenos valores por defecto de registro - fail-nicely-django .
Muestra de salida del archivo de registro:
2016-04-05 22:12:32,984 [Thread-1 ] [INFO ] [djangoproject.logger] This is a manually logged INFO string.
2016-04-05 22:12:32,984 [Thread-1 ] [DEBUG] [djangoproject.logger] This is a manually logged DEBUG string.
2016-04-05 22:12:32,984 [Thread-1 ] [ERROR] [django.request ] Internal Server Error: /
Traceback (most recent call last):
File "/Users/kermit/.virtualenvs/fail-nicely-django/lib/python3.5/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/kermit/.virtualenvs/fail-nicely-django/lib/python3.5/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/kermit/projekti/git/fail-nicely-django/djangoproject/brokenapp/views.py", line 12, in brokenview
raise Exception(''This is an exception raised in a view.'')
Exception: This is an exception raised in a view.
El uso detallado se explica en el README , pero esencialmente, usted copia el módulo logger en su proyecto Django y lo agrega from .logger import LOGGING
en la parte inferior de su settings.py .