尽管(假定)配置正确,Django不会记录错误

2024-10-06 14:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让Django日志在我们的开发服务器上工作。我已经阅读了How do you log server errors on django sites,它似乎是关于这个主题的最终答案,并将答案https://stackoverflow.com/a/6395837/1094910中的配置复制到我的settings.py(当然,更改WatchedFileHandler的输出文件;并将我的管理电子邮件地址添加到settings.ADMINS)。在

AdminEmailHandler和WatchedFileHandler都没有按照我在站点上引发错误500的方式进行操作。我已经将settings.DEBUG设置为False,并确认Django既可以发送电子邮件也可以写入文件。我还尝试过直接从Django shell进行日志记录:

$ /usr/local/pythonenv/DJANGO/bin/python manage.py shell
...
>>> import logging
>>> l = logging.getLogger('django')
>>> l.handlers[0]
<logging.handlers.WatchedFileHandler instance at 0xcd3b48>
>>> l.error("This should write to a file")
>>> l = logging.getLogger('django.request')
>>> l.handlers[0]
<django.utils.log.AdminEmailHandler instance at 0xcd37e8>
>>> l.error("This should email the addresses in settings.ADMINS")

在上述情况下,两个记录器都不会发出窥视。在

但是,通用的Python日志记录可以工作(至少对于文件),证明这不是文件权限问题:

^{pr2}$

如上所述,Django可以并且很高兴地在我的项目的其余部分发送电子邮件,只是在本例中没有。在

WatchedFileHandler使用相同的配置在我的本地机器上工作(当然除了文件路径);AdminEmailHandler没有,但我怀疑这是因为我使用Gmail作为电子邮件服务器,如here所述。(本地计算机是Windows7;配置不起作用的开发服务器是Debian6.0.3。)

我觉得我好像错过了一些简单而明显的东西,但我花了一天的时间试图弄清楚它可能是什么。关于我可能遗漏了哪些配置,或者我应该尝试哪些其他故障排除方法,以找出Python日志记录有效而Django日志记录不起作用的原因,有什么建议吗?在


Tags: 文件django答案py服务器logsettings电子邮件