Django
Skogsavverkning
Sök…
Loggar till Syslog-tjänsten
Det är möjligt att konfigurera Django för att mata ut logg till en lokal eller fjärrsyslog-tjänst. Denna konfiguration använder Python-inbyggda SysLogHandler .
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)
Django grundläggande loggningskonfiguration
Internt använder Django Python-loggningssystemet. Det finns många sätt att konfigurera loggningen av ett projekt. Här är en bas:
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',
},
}
}
formate
Det kan användas för att konfigurera utseende av loggar när de skrivs ut för att mata ut. Du kan definiera många formaterare genom att ställa in en nyckelsträng för varje olika formaterare. En formaterare används sedan när deklarerar en hanterare.
Handlar
Kan användas för att konfigurera var loggarna kommer att skrivas ut. I exemplet ovan skickas de till stdout och stderr. Det finns olika hanterarklasser:
'rotated_logs': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/var/log/my_project.log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 5,
'formatter': 'default'
'level': 'DEBUG',
},
Detta kommer att producera loggar i fil inriktad på filename
. I det här exemplet skapas en ny loggfil när den nuvarande når storleken på 5 MB (den gamla byts namn till my_project.log.1) och de senaste 5 filerna kommer att sparas för arkiv.
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
Detta skickar varje logg med eamil till användare som anges i ADMINS
inställningsvariabeln. Nivån är inställd på ERROR
, så bara loggar med nivå ERROR
kommer att skickas via e-post. Detta är oerhört användbart för att hålla dig informerad om eventuella fel 50x på en produktionsserver.
Andra hanterare kan användas med Django. För en fullständig lista, läs motsvarande dokumentation . Som formaterare kan du definiera många hanterare i samma projekt och ställa in för varje en annan nyckelsträng. Varje hanterare kan användas i en specifik logger.
loggers
I LOGGING
den sista delen för varje modul den minimala loggningsnivån, hanterarna / användarna etc.