【发布时间】:2010-10-18 03:56:39
【问题描述】:
当我编码时,我通常只是想将一些小东西(主要是变量的当前值)打印到控制台。尽管我注意到 Google App Engine 启动器确实有一个日志终端,但我没有看到类似的 Google App Engine 内容。有没有办法使用 Google App Engine 向所述终端或其他终端写信?
【问题讨论】:
标签: python google-app-engine logging
当我编码时,我通常只是想将一些小东西(主要是变量的当前值)打印到控制台。尽管我注意到 Google App Engine 启动器确实有一个日志终端,但我没有看到类似的 Google App Engine 内容。有没有办法使用 Google App Engine 向所述终端或其他终端写信?
【问题讨论】:
标签: python google-app-engine logging
您需要使用 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 是:
debuginfowarningerrorcritical您可以通过双击应用然后将其放入Extra Flags字段来添加标志。
【讨论】:
--log_level=debug而不是--debug。
见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))
【讨论】:
@Manjoor
你可以在 java 中做同样的事情。
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.");
}
}
参见http://code.google.com/appengine/docs/java/runtime.html中的“记录”
【讨论】:
如果您使用的是更新版本的 Python 开发服务器(版本 > 1.7.6,或 2013 年 3 月及更高版本),这些似乎是正确的使用步骤:
在您的脚本中包含以下内容,
import logging
logging.debug("something I want to log")
根据this docs page,通过转到编辑 > 应用程序设置 > 启动设置 > 额外命令行标志设置一个标志,然后添加,
--log_level=debug
【讨论】:
您还应该看看 FirePython。它允许您在 firebug 中获取服务器日志消息。
http://appengine-cookbook.appspot.com/recipe/firepython-logger-console-inside-firebug/
【讨论】:
在我的网站Learn Python 上查看我在 Google App Engine 上运行的在线 Python 解释器。这可能是您正在寻找的东西。只需在要查看的内容上使用 print repr(variable),然后执行任意多次即可。
【讨论】:
您好,我使用的是 1.8.6 版的 GoogleAppEngineLauncher,您可以使用标志来设置您想要查看的消息日志级别,例如调试消息:
--dev_appserver_log_level debug
用它代替--debug(见@Christopher 回答)。
【讨论】:
GAE 将捕获标准错误并将其打印到控制台或日志中。
print >> sys.stderr, "Something to log."
【讨论】:
使用 log.setLevel(Level.ALL) 查看消息
默认邮件过滤级别似乎是“错误”。在我使用 setLevel() 方法使 .info 和 .warning 消息可见之前,我没有看到任何有用的日志消息。
打印到 System.out 的文本也没有显示。它似乎被解释为 log.info() 级别的消息。
【讨论】:
我希望我能回答这个问题。日志消息打印到 AppEngine 日志而不是终端。
你可以启动它 by clicking on the logs button of the AppEngine Launcher
【讨论】:
Using the logging module is good practice, 但不是必需的。
您可以通过简单的print()s 写入 Google App Engine 日志控制台。
【讨论】: