Django의 일반적인 디버그 방법 요약
1. print 방법
python 관리자를 사용하기 때문입니다.py runserver는 실제적으로 하위 프로세스를 시작하는 방식으로 하위 프로세스의 표준 출력이 어디에 있는지 알 수 없기 때문에 디버그 서버만 하위 프로세스로 진행하지 못하게 하고 다음과 같은 명령을 사용할 수 있습니다.
python manage.py runserver --noreload
이렇게 print에서 나온 정보는 터미널에서 볼 수 있지만, 이렇게 조작하는 문제는 코드가 수정될 때마다 서버를 다시 시작해야 한다는 것이다.
2. Django loging 모듈 사용
# -*- coding:utf-8 -*-
import logging
# Get an instance of a logger
logger = logging.getLogger(__name__)
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
기본적으로 logging 모듈은 로그를 화면에 출력합니다 (stdout). 로그 레벨은 WARNING입니다. (로그 레벨이 WARNING보다 높은 로그 정보만 출력됩니다.)
setting에서.py에서 구성 로그:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/path/to/django/debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
복잡한 로그 구성:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'special': {
'()': 'project.logging.SpecialFilter',
'foo': 'bar',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['special']
}
},
'loggers': {
'django': {
'handlers': ['console'],
'propagate': True,
},
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
},
'myproject.custom': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
'filters': ['special']
}
}
}
logging 모듈의 몇 가지 중요한 개념, Logger,Handler,Formatter,Filter:
logging 모듈의 처리 프로세스
자세한 사용 방법은 공식 문서를 볼 수 있습니다.https://docs.djangoproject.com/en/1.7/topics/logging/
전재 대상:https://www.cnblogs.com/weisenz/archive/2012/04/01/2428576.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.