Djnago Logging
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%Y-%m-%d %H:%M:%S"
},
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': 'access.log',
'formatter': 'standard',
'maxBytes': 1024*1024*100,
'backupCount': 10,
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'api': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': False,
},
},
'root': {
'level': 'DEBUG',
'handlers': ['console'],
}
}
propagate
logging.getLogger() 인자값 없이 생성하면 root logger 가 생성됨
logging.getLogger("이름") 인자값을 넘겨주고 생성하면 "이름" 으로 logger 가 생성됨
두 logger는 부모와 자식 관계를 갖음
이때 자식 logger 에서 부모 logger 에도 로그 메시지를 넘겨 줄수 잇는데 그 기능이 propagate 임.
사용하지 않으려면 False 로 성정하면 됨
만약 위 설정에서 api 로거의 propagate 를 True 로 하고 로그를 남기면
file, console 두곳에 같은 로그메시지가 전달됨
/path/to/projectname/projectname/settings.py 에 정의함