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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow