尽管(推测)正确的配置,Django也不会记录错误

时间:2012-01-28 18:08:56

标签: python django error-logging

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

当我在网站上引发错误500时,AdminEmailHandler和WatchedFileHandler都没有做他们应该做的事情。我已将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日志记录将起作用(至少对于文件而言),证明它不是文件权限问题:

$ python     # (or /usr/local/pythonenv/DJANGO/bin/python manage.py shell)
...
>>> import logging
>>> logging.basicConfig(filename='/path/to/same/file/as/above', level=logging.DEBUG)
>>> logging.error("This one shows up")

如上所述,Django可以并且很乐意在我的项目的其余部分发送电子邮件,而不是在这种情况下。

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

我觉得自己好像缺少一些简单而明显的东西,但却花了大半天时间试图找出它可能是什么。关于我可能错过了什么配置,或者我应该尝试哪些其他故障排除的任何建议,找出为什么Python的日志记录有效,但Django没有?

0 个答案:

没有答案