How do I write to the console in Google App Engine?
Question:
Often when I am coding I just like to print little things (mostly the current value of variables) out to console. I don’t see anything like this for Google App Engine, although I note that the Google App Engine Launcher does have a Log terminal. Is there any way to write to said Terminal, or to some other terminal, using Google App Engine?
Answers:
See https://cloud.google.com/appengine/docs/python/requests#Python_Logging
and http://docs.python.org/library/logging.html
You probably want to use something like:
logging.debug("value of my var is %s", str(var))
You should also give FirePython a look. It allows you to get server log messages in firebug.
http://appengine-cookbook.appspot.com/recipe/firepython-logger-console-inside-firebug/
@Manjoor
You can do the same thing in 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.");
}
}
See “Logging” in http://code.google.com/appengine/docs/java/runtime.html
Check out my online Python interpreter running on Google App Engine on my website, Learn Python. It might be what you’re looking for. Just use print repr(variable) on things you want to look at, and execute as many times as you want.
You’ll want to use the Python’s standard logging
module.
import logging
logging.info("hello")
logging.debug("hi") # this won't show up by default
To see calls to logging.debug()
in the GoogleAppEngineLauncher Logs console, you have to first add the flag --dev_appserver_log_level=debug
to your app. However, beware that you’re going to see a lot of debug noise from the App Engine SDK itself. The full set of levels are:
debug
info
warning
error
critical
You can add the flag by double clicking the app and then dropping it into the Extra Flags field.
GAE will capture standard error and print it to the console or to a log.
print >> sys.stderr, "Something to log."
Use log.setLevel(Level.ALL) to see messages
The default message filtering level seems to be ‘error’. I didn’t see any useful log messages until I used the setLevel() method to make the .info and .warning messages visible.
Text printed to System.out wasn’t showing up either. It seems to be interpreted as log.info() level messaages.
Hello I’m using the version 1.8.6 of GoogleAppEngineLauncher, you can use a flag to set the messages log level you want to see, for example for debug messages:
--dev_appserver_log_level debug
Use it instead of --debug
(see @Christopher answer).
If you’re using a more recent version of the Python Development Server (releases > 1.7.6, or Mar 2013 and later), these seem to be the right steps to use:
-
Include the following in your script,
import logging
logging.debug("something I want to log")
-
And per this docs page, set a flag by going to Edit > Application Settings > Launch Settings > Extra Command Line Flags, and adding,
--log_level=debug
I hope i am answering the question. The logging messages print to the AppEngine log rather than the terminal.
You can launch it
by clicking on the logs button of the AppEngine Launcher
Using the logging
module is good practice, but it’s not required.
You can just do plain-old print()
s to write to the Google App Engine Log Console.
Often when I am coding I just like to print little things (mostly the current value of variables) out to console. I don’t see anything like this for Google App Engine, although I note that the Google App Engine Launcher does have a Log terminal. Is there any way to write to said Terminal, or to some other terminal, using Google App Engine?
See https://cloud.google.com/appengine/docs/python/requests#Python_Logging
and http://docs.python.org/library/logging.html
You probably want to use something like:
logging.debug("value of my var is %s", str(var))
You should also give FirePython a look. It allows you to get server log messages in firebug.
http://appengine-cookbook.appspot.com/recipe/firepython-logger-console-inside-firebug/
@Manjoor
You can do the same thing in 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.");
}
}
See “Logging” in http://code.google.com/appengine/docs/java/runtime.html
Check out my online Python interpreter running on Google App Engine on my website, Learn Python. It might be what you’re looking for. Just use print repr(variable) on things you want to look at, and execute as many times as you want.
You’ll want to use the Python’s standard logging
module.
import logging
logging.info("hello")
logging.debug("hi") # this won't show up by default
To see calls to logging.debug()
in the GoogleAppEngineLauncher Logs console, you have to first add the flag --dev_appserver_log_level=debug
to your app. However, beware that you’re going to see a lot of debug noise from the App Engine SDK itself. The full set of levels are:
debug
info
warning
error
critical
You can add the flag by double clicking the app and then dropping it into the Extra Flags field.
GAE will capture standard error and print it to the console or to a log.
print >> sys.stderr, "Something to log."
Use log.setLevel(Level.ALL) to see messages
The default message filtering level seems to be ‘error’. I didn’t see any useful log messages until I used the setLevel() method to make the .info and .warning messages visible.
Text printed to System.out wasn’t showing up either. It seems to be interpreted as log.info() level messaages.
Hello I’m using the version 1.8.6 of GoogleAppEngineLauncher, you can use a flag to set the messages log level you want to see, for example for debug messages:
--dev_appserver_log_level debug
Use it instead of --debug
(see @Christopher answer).
If you’re using a more recent version of the Python Development Server (releases > 1.7.6, or Mar 2013 and later), these seem to be the right steps to use:
-
Include the following in your script,
import logging
logging.debug("something I want to log") -
And per this docs page, set a flag by going to Edit > Application Settings > Launch Settings > Extra Command Line Flags, and adding,
--log_level=debug
I hope i am answering the question. The logging messages print to the AppEngine log rather than the terminal.
You can launch it
by clicking on the logs button of the AppEngine Launcher
Using the logging
module is good practice, but it’s not required.
You can just do plain-old print()
s to write to the Google App Engine Log Console.