2012-03-28 46 views
1

在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. 

编辑:上面的代码就在于叫我models.py当我收到来自PayPal

一个POST失败后,我试图寻找到我的Apache错误日志和我的日志文件,但没有看到任何错误。

我怎么能看到什么是错的代码?

+0

你是如何调用的代码? WSGI? – 2012-03-28 09:11:11

+0

这个代码片断放在我的models.py。它被称为当我notify_url贝宝的职位。 (如果这回答你的问题) – xpanta 2012-03-28 09:49:58

+0

你是如何与你的网络服务器连接起来的? mod_wsgi的,mod_python的,等等? – 2012-03-28 10:13:06

回答

1

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

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

有张贴在该网页几个解决方法,但一个我会先从是以下内容添加到您的WSGI配置:

WSGIRestrictStdout Off

看看是否有错误日志帮助。

+0

肯定。非常感谢! – xpanta 2012-03-29 05:30:06