Django
벌채 반출
수색…
Syslog 서비스에 로깅
Django가 로컬 또는 원격 syslog 서비스로 로그를 출력하도록 설정할 수 있습니다. 이 구성은 파이썬 내장 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는 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',
},
}
}
포매터
로그 출력을 인쇄 할 때 로그 appearence를 구성하는 데 사용할 수 있습니다. 서로 다른 포맷터에 키 문자열을 설정하여 여러 포맷터를 정의 할 수 있습니다. 포맷터는 핸들러를 선언 할 때 사용됩니다.
핸들러
로그를 인쇄 할 위치를 구성하는 데 사용할 수 있습니다. 위의 예에서는 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
tergeted 파일에 로그가 생성됩니다. 이 예제에서는 현재 크기가 5MB에 도달하면 새 로그 파일이 만들어지고 (이전 파일은 my_project.log.1로 이름이 바뀜) 최신 5 개의 파일이 보관을 위해 보관됩니다.
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
이렇게하면 ADMINS
설정 변수에 지정된 사용자에게 각 로그가 eamil로 전송됩니다. 수준은 ERROR
로 설정되므로 ERROR
수준의 로그 만 전자 메일로 전송됩니다. 이것은 프로덕션 서버에서 잠재적 인 오류 50x에 대한 정보를 얻는 데 매우 유용합니다.
장고에서는 다른 핸들러를 사용할 수 있습니다. 전체 목록을 보려면 해당 문서 를 읽으십시오. 포맷터와 마찬가지로 동일한 프로젝트에서 여러 키 문자열을 각각 설정하여 여러 핸들러를 정의 할 수 있습니다. 각 핸들러는 특정 로거에서 사용될 수 있습니다.
로거
LOGGING
에서 마지막 부분은 각 모듈에 대해 최소 로깅 수준, 사용할 처리기 등을 구성합니다.