을 사용하는 동안 Django에서 스택 추적을 표준 출력으로 출력합니다. 일부 검색을했는데 누군가 장고 구성의 스 니펫을 사용하여 장고를 표준 출력으로 출력하려면 궁금합니다. 그래서 터미널 창에서 볼 수 있습니다.) 요청 중에 오류가 발생했을 때. 이것은 특히 지역 개발/디버깅을위한 것이고 주로 AJAX 게시물 요청을 할 때 사용되며 Firebug에서 HTML을보고 오류가 발생한 행을 파악해야합니다.manage.py runserver
답변
이렇게하려면 미들웨어를 만들 수 있습니다.
class ExceptionLoggingMiddleware(object):
def process_exception(self, request, exception):
import traceback
print traceback.format_exc()
놓고 장고 설정의 미들웨어 부분이 핸들러 : 여기가 프로젝트에 사용하고 수정 조각입니다.
서브 클래스 WSGI 핸들러는 정의 된 handle_uncaught_exception
에서 원하는대로 추적을 수행하고, 배포 할 때 django가 제공하는 WSGIHandler 대신 WSGIHandler를 사용하십시오.
import traceback
from django.core.handlers.wsgi import WSGIHandler
class MyWSGIHandler(WSGIHandler):
"""WSGI Handler which prints traceback to stderr"""
def handle_uncaught_exception(self, request, resolver, exc_info):
traceback.print_tb(exc_info[2], file=sys.stderr)
return super(WSGIHandler, self).handle_uncaught_exception(request, resolver, exc_info)
이 아파치의 에러 로그
또 다른 방법은 LOGGING 함께에서 역 추적을 작성해야합니다.
LOGGING = {
'version': 1,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.request': {
'handlers':['console'],
'propagate': True,
'level':'DEBUG',
}
},
}
이 구문은 장고 문서 Configuring Logging에서오고 더 높이거나는 console의 양을 감소 수정할 수 있습니다하여 settings.py 파일에 다음을 추가하여 ./manage.py runserver
을 실행할 때 특히 당신은 스택 트레이스를 얻을 수 벌채 반출.
또한 5XX 응답은 오류 메시지로 제기되고 4XX 응답은 경고 메시지로 발생합니다.
이 질문에 & 답변은 2013 년 중복 here입니다.
제 생각에는 이것이 바람직한 방법이어야합니다. 어떤 로거를 사용하고 싶은지, 어떤 것을 기록하고 싶은지 등을 훨씬 더 많이 제어 할 수 있습니다. – Andre
비슷한 문제가 있었지만 미들웨어 옵션이 도움이되지 않았습니다. 그 이유는 django-jsonview 0.4.3을 사용했기 때문입니다. 데코레이터가 장식 된 함수가 실패하더라도 사전을 유효한 json http 응답으로 변환하는 데코레이터를 제공하므로 process_exception 미들웨어 메소드가 호출되지 않습니다. 나는이 장식의 코드를 확인하고 이렇게 오류 로그인을 시도 할 것으로 보인다 :이 작동하지 않으며 아무것도 내 bash는 콘솔에 기록되는 이유,
...
except Exception as e:
logger = logging.getLogger('django.request')
logger.exception(unicode(e))
는 그러나, 나는 모르겠어요. 왜 이런 일이 일어나는지 알아야합니다. 내 모든 JSON보기에, 그리고
def log_errors(func):
if not settings.DEBUG:
return func
def wrapper(request, *args, **kwargs):
try:
return func(request, *args, **kwargs)
except:
print traceback.format_exc()
return wrapper
: 한편, 나는 여분의 장식을 사용하고
이@json_view
@log_errors
def my_view(request):
....
나는 보통이 사용 : 다음
except Exception,e:
# Get line
trace=traceback.extract_tb(sys.exc_info()[2])
# Add the event to the log
output ="Error in the server: %s.\n" % (e)
output+="\tTraceback is:\n"
for (file,linenumber,affected,line) in trace:
output+="\t> Error at function %s\n" % (affected)
output+="\t At: %s:%s\n" % (file,linenumber)
output+="\t Source: %s\n" % (line)
output+="\t> Exception: %s\n" % (e)
내가 사용 "을 출력 "내가 원하는 것 : 표준 출력으로 인쇄, 이메일 보내기 등 ...
It 's st 범위 아무도 DEBUG_PROPAGATE_EXCEPTIONS
설정을 언급하지 않았습니다.프로덕션이 아니지만 테스트/디버깅 환경에서 사용하기가 쉽습니다. settings.py
에 간단히 덧붙여서 :
DEBUG_PROPAGATE_EXCEPTIONS = True
- 1. manage.py runserver not working
- 2. python manage.py runserver 실패
- 3. django dev 서버 (manage.py runserver)는 어디에서 경로를 가져 옵니까?
- 4. 와일드 카드 하위 도메인을 처리하도록 Django 개발 서버 (./manage.py runserver)를 구성 하시겠습니까?
- 5. Django runserver permanent
- 6. Django runserver --pythonpath 지시문에 여러 경로를 전달할 수 있습니까?
- 7. Django manage.py 질문
- 8. python manage.py syncdb
- 9. django의 runserver 옵션은 다른 재시작 스크립트를 실행하기위한 후크를 제공합니까?
- 10. 왜 coverage.py는 Django의 runserver 명령을 제대로 측정하지 못합니까?
- 11. Pinax - 발견되지 manage.py syncdb VIRTUALENV
- 12. Django 초보자 문제 : manage.py dbsync
- 13. manage.py 데이터베이스 이름을 업데이트하지 않습니다.
- 14. django manage.py syncdb가 작동하지 않습니까?
- 15. Django runserver, 가져 오기 실패 - 프로젝트 이름 대문자?
- 16. 로컬 호스트에서 Django runserver 성능 문제가 발생했습니다.
- 17. django runserver 때 스레드를 시작하는 방법?
- 18. djangos manage.py custom 명령을 사용하여 대몬 서비스를 시작 하시겠습니까?
- 19. python manage.py syncdb가 models.py에서 가져 오지 않습니다
- 20. django manage.py 출력을 (Windows에서) 텍스트 파일로 리디렉션
- 21. django 'manage.py sql appname'에서 mysql 출력을 검색합니다.
- 22. -bash는 : ./manage.py : 권한 실행 한 후
- 23. 'manage.py test'는 어떻게 작동합니까? (pdb 문제)
- 24. Django의 manage.py 쉘은 들여 쓰지 않습니다
- 25. mysql에서 django의 manage.py sql * 명령을 사용하는 방법
- 26. manage.py syncbd django.contrib 앱을 동기화하지 않음
- 27. django "manage.py index"가 cron 작업으로 실행되지 않습니다.
- 28. Django manage.py 부속 명령 및 옵션 목록 만 반환
- 29. 파이썬을 사용하여 데이터를 덤프 할 수 없습니다 ./manage.py dumpdata app
- 30. Django + Virtualenv : 프로젝트 이름이 importError 인 manage.py 명령이 실패합니다.
"Terminal Window"? 'django-admin.py runserver'를 실행하고 있습니까? –
네,'manage.py runserver'를 로컬로 사용하고 있지만, 이메일을 받는다해도 문제가되지는 않지만 생산에 도움이 될 것입니다. – Bialecki
"프로덕션"접근 방식은 Apache와의 통합 방식에 따라 다르므로 해당 설정에 대한 자세한 내용을 제공하여 이해해야합니다. –