DB를 실시간으로 Query를 추적, 모니터링 하는 방법.
즉, log를 직접적으로 볼 수 있다.
log를 직접 확인 가능하면?
- 버그 수집 및 트래킹.
- 롤백 및 대응 등에 대한 의사결정 판단의 근거로 활용.
- 특정 기능에 대한 사용자 진단.
ex)
- DEBUG : 디버깅을 위한 정보
- INFO : 일반 시스템 정보
- WARNING : minor한 문제에 대한 정보
- ERROR : major한 문제에 대한 정보
- CRITICAL : critical한 문제에 대한 정보
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'fileFormat': {
'format': '[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s',
'datefmt': '%d/%b/%Y %H:%M:%S'
}
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': join(BASE_DIR, 'logs/logfile.log'),
'formatter': 'fileFormat'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'post': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
'django.db.backends': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
}
}
version : 버전 정보로서 현재까지 1
정보 밖에 존재하지 않는다.
disable_existing_loggers : True
일 경우 기본 구성의 logger들이 비활성화된다.
formatters : 로그 데이터들을 텍스트로 렌더링 되는데 그 때의 형식을 지정한다.
handlers : 어떤 방식으로 logging 할지를 지정할 수 있다. 위 예시에서는 두 개의 handlers
가 존재하여 file에 기록하는 file handlers
와 console
에 출력하는 console handlers 가 있다.
loggers : logger를 정의한다. 앱 이름을 통해 지정할 수 도 있으며 내장 logger를 사용할 수 도 있다.
위의 django.db.backends
는 db와의 상호작용과 관련된 메세지로 sql을 확인할 수 있다.