django syslog

Cómo configurar SysLogHandler con la configuración del diccionario de registro Django 1.3



(2)

Esto funciona para mí (en debian por defecto).

  1. Sospecho que usar una dirección de /dev/log es el secreto para garantizar que no se intente usar la red.
  2. Creo que usar una etiqueta de registrador de '''' equivale al registrador raíz, así que atrapará la mayoría de las cosas

En settings.py:

LOGGING = { ''version'': 1, ''handlers'': { ''syslog'':{ ''address'': ''/dev/log'', ''class'': ''logging.handlers.SysLogHandler'' } }, ''loggers'': { '''': { ''handlers'': [''syslog''], ''level'': ''DEBUG'', } } }

en la aplicación:

import logging logging.info("freakout info")

proporciona:

john:/var/log$ sudo tail -1 user.log Dec 14 17:15:52 john freakout info

No tengo la suerte de encontrar información sobre cómo configurar el registro de syslog con la configuración del diccionario Django 1.3. Los documentos de Django no cubren syslog y la documentación de Python no está clara y no cubre la configuración del diccionario. Comencé con lo siguiente, pero estoy atascado en cómo configurar el SysLogHandler.

LOGGING = { ''version'': 1, ''disable_existing_loggers'': True, ''formatters'': { ''verbose'': { ''format'': ''%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'' }, ''simple'': { ''format'': ''%(levelname)s %(message)s'' }, }, ''handlers'': { ''syslog'':{ ''level'':''DEBUG'', ''class'':''logging.handlers.SysLogHandler'', ''formatter'': ''verbose'' }, }, ''loggers'': { ''django'': { ''handlers'':[''syslog''], ''propagate'': True, ''level'':''INFO'', }, ''myapp'': { ''handlers'': [''syslog''], ''propagate'': True, ''level'': ''DEBUG'', }, }, }


Finalmente encontré la respuesta, modifique la configuración en la pregunta original para tener lo siguiente para ''syslog'':

from logging.handlers import SysLogHandler ... ''syslog'':{ ''level'':''DEBUG'', ''class'': ''logging.handlers.SysLogHandler'', ''formatter'': ''verbose'', ''facility'': SysLogHandler.LOG_LOCAL2, }, ...

Advertencia para las generaciones futuras: tienes que hacerlo exactamente igual que en el ejemplo anterior, ocurren errores extraños si especificas la clase directamente, etc.

Actualización: Me acabo de mudar a Amazon Linux (y Django 1.5) y usé el siguiente cambio en la configuración de la sección ''syslog'' en ese entorno, tenga en cuenta el argumento de la ''dirección'':

''syslog'':{ ''level'':''DEBUG'', ''class'': ''logging.handlers.SysLogHandler'', ''formatter'': ''verbose'', ''facility'': ''local1'', ''address'': ''/dev/log'', },