3
我正在使用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()
我已經證實了這一點的工作,但即使在try /未移除的,也不會跳閘Django的追蹤記錄。
雖然它很容易告訴它寫入異常的數據庫/文件,但我真的希望它發送一個定期的回溯定義在設置中。我怎樣才能做到這一點?
編輯:答案似乎涉及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/zh/dev/topics/logging/(電子郵件由日誌框架發送) – akonsu
我已經建立了d這個: 導入日誌; logger = logging.getLogger(「async.logger」); logger.exception(「Async exploded」); 哪有火,但似乎沒有做任何事情。我會首先承認我可能實施錯誤。 –
您的settings.py中是否有正確的電子郵件設置(例如EMAIL_HOST,EMAIL_HOST_PASSWORD等)? – akonsu