通常当我编码时,我只是想将小东西(主要是变量的当前值)输出到控制台。尽管我注意到Google App Engine Launcher确实有一个Log终端,但我没有看到Google App Engine的任何内容。有没有办法使用Google App Engine写信给上述终端或其他终端?如何在Google App Engine中写入控制台?
回答
您将要使用Python的标准logging
模块。
import logging
logging.info("hello")
logging.debug("hi") # this won't show up by default
要看到GoogleAppEngineLauncher日志控制台呼叫logging.debug()
,你必须先旗--dev_appserver_log_level=debug
添加到您的应用程序。但是,请注意,您将看到来自App Engine SDK本身的大量调试噪声。该full set of levels是:
debug
info
warning
error
critical
您可以通过双击应用程序,然后拖放到该添加标志额外的标志字段。
见https://cloud.google.com/appengine/docs/python/requests#Python_Logging
和http://docs.python.org/library/logging.html
你可能想使用类似:
logging.debug("value of my var is %s", str(var))
你也应该给FirePython看看。它允许您在萤火虫中获取服务器日志消息。
http://appengine-cookbook.appspot.com/recipe/firepython-logger-console-inside-firebug/
@Manjoor
你可以在Java中,同样的事情。在http://code.google.com/appengine/docs/java/runtime.html
看看我在我的网站,Learn Python在谷歌App Engine上运行的在线Python解释器
import java.util.logging.Logger;
// ...
public class MyServlet extends HttpServlet {
private static final Logger log = Logger.getLogger(MyServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
log.info("An informational message.");
log.warning("A warning message.");
log.severe("An error message.");
}
}
请参阅 “登录”。这可能是你正在寻找的东西。只需在您想要查看的内容上使用print repr(变量),并根据需要执行多次。
GAE将捕获标准错误,并将其打印到控制台或日志。
print >> sys.stderr, "Something to log."
使用log.setLevel(Level.ALL)以查看消息
的默认消息过滤级别似乎是 '错误'。在我使用setLevel()方法使.info和.warning消息可见之前,我没有看到任何有用的日志消息。
打印到System.out的文本也没有显示出来。它似乎被解释为log.info()级别的消息。
你好,我使用的版本GoogleAppEngineLauncher的1.8.6,您可以使用一个标志设置的邮件日志,你希望看到的水平,例如用于调试消息:
--dev_appserver_log_level debug
使用它而不是--debug
(请参阅@Christopher答案)。
如果你正在使用Python开发服务器的最新版本(版本> 1.7.6,或擦伤2013年和更高版本),这似乎是正确的步骤来使用:
包括在脚本以下,
import logging logging.debug("something I want to log")
而且每this docs page,通过去编辑>应用程序设置>启动设置>附加的命令行标志,并增加设置一个标志,
--log_level=debug
我希望我回答这个问题。日志消息打印到AppEngine日志而不是终端。
可以启动它 by clicking on the logs button of the AppEngine Launcher
我该怎么做相同的java吗? – Manjoor 2010-06-26 12:33:47
您很可能想使用logging.info()而不是logging.debug(),因为GoogleAppEngineLauncher Logs控制台中的默认日志记录级别是这样的,您将看不到任何对logging.debug()的调用。 – 2012-03-12 00:26:26