如何使用Google App Engine停止“打印”输出到浏览器?

时间:2010-09-23 22:28:24

标签: python debugging logging

我是GAE的新手,并且无法弄清楚如何将“print”语句配置到日志记录控制台而不是浏览器。例如:

class Feed(webapp.RequestHandler):
    def post(self):
        feeditem = Feeditem()
        feeditem.author = self.request.get('from')
        feeditem.content = self.request.get('content')
        feeditem.put()
        notify_friends(feeditem)
        self.redirect('/')

def notify_friends(feeditem):
    """Alerts friends of a new feeditem"""    
    print 'Feeditem = ', feeditem

当我执行上述操作时,notify_friends中的print输出到浏览器并以某种方式阻止调用它的post方法中的self.redirect('/')。评论它可以纠正这个问题。

有没有办法改变这种行为?

编辑:Google App Engine代码已删除,因为这是常规。

2 个答案:

答案 0 :(得分:3)

您应该使用logging模块,如下所示:

import logging
def notify_friends(feeditem):
    """Alerts friends of a new feeditem"""    
    logging.info('Feeditem = %s', feeditem)

您可以使用各种日志记录级别,从debugcritical。但是,默认情况下,App Engine SDK仅显示级别info及更高级别的日志消息,这就是我在此处建议的内容。如果需要,您可以要求它向您显示debug消息,但您可能会被无用的(对您)记录信息所淹没,至少在SDK中运行时是这样。

有关详细信息,请参阅the logging module docs

哦,使用logging模块的好处是,您可以在应用程序的App Engine仪表板的“日志”部分下访问生产中的日志消息。

答案 1 :(得分:2)

这不仅仅是GAE的问题。这是一个普遍的问题。您无法打印出HTML,然后尝试使用重定向标头。你的问题的答案是否定的,你不能改变行为。你到底想要达到什么目的?您可能能够以不同的方式获得您想要的东西。