在settings.py中,我设置了一种记录我的消息的方法:
logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s %(levelname)s %(message)s',
filename = 'log/sdout.log',
filemode = 'a'
)
然而有时django会默默地失败。就像信号一样。我的问题是,在我的工作电脑上,一切都很好。在我的生产服务器上出了点问题。我知道异常的地方。我只是看不出它失败的原因。
所以我放了这样的东西:
logging.debug('before error') #this is printed out
try:
end_date = start_date.date() + relativedelta(months = +month_diff)
next_billing_date = start_date.date() + datetime.timedelta(7)
except :
import sys, traceback
traceback.print_exc(file=sys.stdout)
logging.debug('after error') #I never get to that part.
编辑:当我从paypal收到POST时,上面的代码段位于我的models.py
失败后我尝试查看我的apache错误日志和我的日志文件,但看不到任何错误。
如何查看此代码有什么问题?
答案 0 :(得分:1)
我会首先推荐哨兵 - 如果由于系统限制而无法安装 - 它现在可以作为getsentry.com的托管服务使用,并且像大多数此类服务一样,有免费套餐。
然而,问题可能是WSGI默认阻止写入stdout
,在应用程序问题下详细in the documentation wiki。
在该页面上发布的解决方法很少,但我要开始的是将以下内容添加到您的WSGI配置中:
WSGIRestrictStdout Off
看看这是否有助于记录错误。