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