Django
логирование
Поиск…
Вход в систему Syslog
Можно настроить Django для вывода журнала на локальную или удаленную службу syslog. Эта конфигурация использует встроенный 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
Внутри Django использует систему регистрации Python. Существует много способов настроить ведение журнала проекта. Вот база:
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',
},
}
}
Форматтеры
Он может использоваться для настройки появления журналов, когда они печатаются для вывода. Вы можете определить множество форматировщиков, установив строку ключа для каждого другого форматирования. При объявлении обработчика используется форматер.
Обработчики
Может использоваться для настройки, где будут печататься журналы. В приведенном выше примере они отправляются на stdout и stderr. Существуют различные классы обработчиков:
'rotated_logs': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/var/log/my_project.log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 5,
'formatter': 'default'
'level': 'DEBUG',
},
Это приведет к созданию журналов в файле, завершенном по filename
. В этом примере будет создан новый файл журнала, когда текущий размер достигнет 5 МБ (старый переименован в my_project.log.1), и последние 5 файлов будут сохранены для архива.
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
Это отправит каждый журнал ADMINS
пользователям, указанным в переменной настройки ADMINS
. Уровень установлен на ERROR
, поэтому только журналы с уровнем ERROR
будут отправлены по электронной почте. Это чрезвычайно полезно, чтобы быть в курсе потенциальных ошибок 50x на сервере производства.
Другие обработчики могут использоваться с Django. Для получения полного списка, пожалуйста, ознакомьтесь с соответствующей документацией . Подобно formatters, вы можете определить много обработчиков в одном проекте, установив для каждой другой ключевой строки. Каждый обработчик может использоваться в конкретном регистраторе.
Лесорубы
В LOGGING
последняя часть настраивает для каждого модуля минимальный уровень ведения журнала, используемые обработчики (ы) и т. Д.