Szukaj…


Logowanie do usługi Syslog

Możliwe jest skonfigurowanie Django do wysyłania dziennika do lokalnej lub zdalnej usługi syslog. Ta konfiguracja korzysta z wbudowanego w Pythona narzędzia 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)

Podstawowa konfiguracja rejestrowania w Django

Wewnętrznie Django korzysta z systemu rejestrowania w języku Python. Istnieje wiele sposobów konfigurowania rejestrowania projektu. Oto podstawa:

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

Formatery

Można go użyć do skonfigurowania wyglądu dzienników, gdy są drukowane na wyjściu. Można zdefiniować wiele formatatorów, ustawiając ciąg klucza dla każdego innego formatyzatora. Formatyzator jest następnie używany podczas deklarowania modułu obsługi.

Handlery

Może być użyty do skonfigurowania, gdzie dzienniki będą drukowane. W powyższym przykładzie są one wysyłane do stdout i stderr. Istnieją różne klasy procedur obsługi:

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

Spowoduje to wygenerowanie dzienników w pliku uporządkowanym według filename . W tym przykładzie nowy plik dziennika zostanie utworzony, gdy bieżący osiągnie rozmiar 5 MB (stary zmieni nazwę na my_project.log.1), a ostatnie 5 plików zostanie zachowanych do archiwizacji.

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

Spowoduje to wysłanie każdego dziennika eamil do użytkowników określonych w zmiennej ustawień ADMINS . Poziom jest ustawiony na ERROR , więc tylko logi z poziomem ERROR będą wysyłane e-mailem. Jest to niezwykle przydatne, aby być informowanym o potencjalnych błędach 50x na serwerze produkcyjnym.

Z programem Django można korzystać z innych programów obsługi. Pełna lista znajduje się w odpowiedniej dokumentacji . Podobnie jak formatery, możesz zdefiniować wiele procedur obsługi w tym samym projekcie, ustawiając dla każdego inny ciąg klucza. Każdy moduł obsługi może być używany w określonym programie rejestrującym.

Rejestratory

W LOGGING , ostatnia część konfiguruje dla każdego modułu minimalny poziom rejestrowania, procedury obsługi, które należy użyć itp.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow