Buscar..


Iniciar sesión en el servicio Syslog

Es posible configurar Django para generar un registro de salida a un servicio de syslog local o remoto. Esta configuración utiliza el SysLogHandler incorporado en python .

from logging.handlers import SysLogHandler
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format' : "[YOUR PROJECT NAME] [%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'syslog': {
            'class': 'logging.handlers.SysLogHandler',
            'formatter': 'standard',
            'facility': 'user',
            # uncomment next line if rsyslog works with unix socket only (UDP reception disabled)
            #'address': '/dev/log'
        }
    },
    'loggers': {
        'django':{
            'handlers': ['syslog'],
            'level': 'INFO',
            'disabled': False,
            'propagate': True
        }
    }
}

# loggers for my apps, uses INSTALLED_APPS in settings
# each app must have a configured logger
# level can be changed as desired: DEBUG, INFO, WARNING...
MY_LOGGERS = {}
for app in INSTALLED_APPS:
    MY_LOGGERS[app] = {
        'handlers': ['syslog'],
        'level': 'DEBUG',
        'propagate': True,
    }
LOGGING['loggers'].update(MY_LOGGERS)

Configuración básica de registro de Django.

Internamente, Django usa el sistema de registro Python. Hay muchas formas de configurar el registro de un proyecto. Aquí hay una base:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt': "%Y-%m-%d %H:%M:%S"
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'default'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'INFO',
        },
    }
}

Formateadores

Se puede usar para configurar la aparición de los registros cuando se imprimen en la salida. Puede definir muchos formateadores configurando una cadena de clave para cada formateador diferente. Luego se usa un formateador cuando se declara un controlador.

Manipuladores

Se puede utilizar para configurar dónde se imprimirán los registros. En el ejemplo anterior, se envían a stdout y stderr. Hay varias clases de manejador:

'rotated_logs': {
    'class': 'logging.handlers.RotatingFileHandler',
    'filename': '/var/log/my_project.log',
    'maxBytes': 1024 * 1024 * 5,  # 5 MB
    'backupCount': 5,
    'formatter': 'default'
    'level': 'DEBUG',
},

Esto producirá registros en el archivo seleccionado por filename de filename . En este ejemplo, se creará un nuevo archivo de registro cuando el actual alcance el tamaño de 5 MB (el anterior se renombrará a my_project.log.1) y los últimos 5 archivos se guardarán para archivar.

'mail_admins': {
    'level': 'ERROR',
    'class': 'django.utils.log.AdminEmailHandler'
},

Esto enviará cada registro por eamil a los usuarios especificados en la variable de configuración ADMINS . El nivel se establece en ERROR , por lo que solo los registros con nivel ERROR se enviarán por correo electrónico. Esto es extremadamente útil para mantenerse informado sobre posibles errores 50x en un servidor de producción.

Otros manejadores pueden usarse con Django. Para una lista completa, por favor lea la documentación correspondiente. Al igual que los formateadores, puede definir muchos manejadores en un mismo proyecto, estableciendo para cada cadena de clave diferente. Cada controlador se puede utilizar en un registrador específico.

Madereros

En LOGGING , la última parte configura para cada módulo el nivel de registro mínimo, los controladores a usar, etc.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow