djutils의 비동기 데코레이터를 사용합니다. 별도의 스레드에서 실행되므로 예외가 발생했을 때 추적 전자 메일을 보내지 않는 것이 좋지 않은 부작용이 있습니다.수동으로 Django 1.3의 추적/예외 로그를 실행합니다.
그러나 로거를 넣을 장소는 다음과 같습니다.
def worker_thread():
while 1:
func, args, kwargs = queue.get()
try:
func(*args, **kwargs)
except:
pass # <-- log error here
finally:
queue.task_done()
나는 이것이 작동 확인했지만, 심지어는 시도로/제거를 제외하고는 장고의 역 추적 로거를 여행하지 않습니다.
예외적으로 db/파일에 쓰는 것이 꽤 쉽지만 설정에서 정의 된대로 정규 추적을 보내고 싶습니다. 어떻게해야합니까?
편집 : 대답은 django.utils.log.AdminEmailHandler와 관련이있는 것으로 보이지만 예제를 찾는 데 어려움을 겪고 있습니다.
편집 2 : 다음은 현재 (99 % 가능성이 높음) 시도입니다.
from django.utils.log import AdminEmailHandler
def worker_thread():
while 1:
func, args, kwargs = queue.get()
try:
func(*args, **kwargs)
except:
import logging
from django.conf import settings
print settings.EMAIL_HOST
logger = logging.getLogger("async.logger")
logger.exception("Async exploded")
AdminEmailHandler
pass # <-- log error here
finally:
queue.task_done()
여기에 표시된대로 오류를 로깅하려고 시도 했습니까? https://docs.djangoproject.com/en/dev/topics/logging/ (로깅 프레임 워크에서 전자 메일을 보냈습니다) – akonsu
트라이를했습니다. 이 : 가져 오기 로깅; logger = logging.getLogger ("async.logger"); logger.exception ("Async exploded"); 화재는 있지만 아무 것도하지 않는 것으로 보입니다. 그리고 아마도 내가 잘못 구현 한 것임을 처음으로 인정할 것입니다. –
settings.py에 올바른 이메일 설정 (예 : EMAIL_HOST, EMAIL_HOST_PASSWORD 등)이 있습니까? – akonsu