테스트, 개발 및 프로덕션을 위해 다른 이니셜 라이저 모듈이있는 경우 초기 설정에서 아무것도 비활성화하거나 리디렉션 할 수 있습니다. local.py, test.py 및 production.py가 모두 common.y에서 상속받습니다.
common.py는이 스 니펫을 포함하여 모든 기본 구성을 수행합니다.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[%(server_time)s] %(message)s',
},
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'django.server',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True,
},
'celery.tasks': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
}
그런 다음 test.py에서 이것을 가지고 있습니다 :
console_logger = Common.LOGGING.get('handlers').get('console')
console_logger['class'] = 'logging.FileHandler
console_logger['filename'] = './unitest.log
이것은 콘솔 핸들러를 FileHandler로 대체하며 여전히 로깅을 얻지 만 프로덕션 코드베이스를 건드릴 필요는 없습니다.