Zoeken…


Aanmelden bij Syslog-service

Het is mogelijk om Django te configureren om logboek uit te voeren naar een lokale of externe syslog-service. Deze configuratie maakt gebruik van de ingebouwde python 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 basisregistratieconfiguratie

Intern gebruikt Django het Python-logsysteem. Er zijn veel manieren om het loggen van een project te configureren. Hier is een basis:

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',
        },
    }
}

formatteerders

Het kan worden gebruikt om de weergave van logboeken te configureren wanneer deze worden afgedrukt om te worden uitgevoerd. U kunt veel formatteerders definiëren door een sleutelreeks in te stellen voor elke verschillende formatter. Een formatter wordt dan gebruikt bij het declareren van een handler.

handlers

Kan worden gebruikt om te configureren waar de logboeken worden afgedrukt. In het bovenstaande voorbeeld worden ze verzonden naar stdout en stderr. Er zijn verschillende handlerklassen:

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

Dit levert logbestanden op in het bestand met de filename . In dit voorbeeld wordt een nieuw logbestand gemaakt wanneer het huidige de grootte van 5 MB bereikt (het oude bestand wordt hernoemd naar my_project.log.1) en de laatste 5 bestanden worden bewaard voor archivering.

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

Dit stuurt elk logboek door eamil naar gebruikers die zijn opgegeven in de instellingsvariabele ADMINS . Het niveau is ingesteld op ERROR , dus alleen logs met niveau ERROR worden per e-mail verzonden. Dit is uiterst handig om 50x op een productieserver op de hoogte te blijven.

Andere handlers kunnen worden gebruikt met Django. Lees de bijbehorende documentatie voor een volledige lijst. Net als formatteerders kunt u veel handlers in hetzelfde project definiëren en voor elk een andere toetsreeks instellen. Elke handler kan in een specifieke logger worden gebruikt.

houthakkers

In LOGGING configureert het laatste deel voor elke module het minimale logniveau, de te gebruiken handlers, enz.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow