在生产服务器上的django应用程序中调试信号

时间:2012-03-28 08:06:28

标签: django debugging

在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错误日志和我的日志文件,但看不到任何错误。

如何查看此代码有什么问题?

1 个答案:

答案 0 :(得分:1)

我会首先推荐哨兵 - 如果由于系统限制而无法安装 - 它现在可以作为getsentry.com的托管服务使用,并且像大多数此类服务一样,有免费套餐。

然而,问题可能是WSGI默认阻止写入stdout,在应用程序问题下详细in the documentation wiki

在该页面上发布的解决方法很少,但我要开始的是将以下内容添加到您的WSGI配置中:

WSGIRestrictStdout Off

看看这是否有助于记录错误。