Как мне писать в консоль в Google App Engine?

Часто, когда я пишу код, мне просто нравится выводить мелочи (в основном текущее значение переменных) на консоль. Я не вижу ничего подобного для Google App Engine, хотя отмечу, что в программе запуска Google App Engine есть терминал журнала. Есть ли способ написать в указанный терминал или в какой-либо другой терминал с помощью Google App Engine?


person Stephen Cagle    schedule 07.04.2009    source источник


Ответы (11)


Вы захотите использовать стандартный модуль Python logging.

import logging

logging.info("hello")
logging.debug("hi") # this won't show up by default

Чтобы увидеть вызовы logging.debug() в консоли журналов GoogleAppEngineLauncher, вы должны сначала добавить флаг --dev_appserver_log_level=debug в свое приложение. Однако имейте в виду, что вы увидите много шума отладки из самого SDK App Engine. полный набор уровней находятся:

  • debug
  • info
  • warning
  • error
  • critical

Вы можете добавить флаг, дважды щелкнув приложение, а затем перетащив его в поле Дополнительные флаги.

«Добавление

person Chris Calo    schedule 12.03.2012
comment
Это был самый полезный ответ. Это заслуживает внимания - person AturSams; 25.06.2012
comment
Согласно этому последнему ответу, вы должны использовать дополнительный флаг --log_level=debug вместо --debug. - person Jesse Webb; 17.12.2014
comment
Спасибо, @JesseWebb. Обновлено. - person Chris Calo; 21.12.2014
comment
Я пытаюсь установить уровень журнала на предупреждение, чтобы скрыть информационный шум, но он не работает. Любые идеи? - person Jay Kyburz; 08.07.2015
comment
оказывается --dev_appserver_log_level = предупреждение - это правильная настройка - person Jay Kyburz; 08.07.2015

См. 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))
person vartec    schedule 07.04.2009
comment
Как я могу сделать то же самое в Java? - person Manjoor; 26.06.2010
comment
Скорее всего, вы захотите использовать logging.info () вместо logging.debug (), потому что уровень ведения журнала по умолчанию в консоли журналов GoogleAppEngineLauncher таков, что вы не увидите никаких вызовов logging.debug (). - person Chris Calo; 12.03.2012
comment
Первая ссылка на Logging for Python GAE не работает. Его следует обновить до cloud.google.com/appengine/docs/python/requests. #Python_Logging - person Jesse Webb; 17.12.2014

@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

person Dario Seidl    schedule 07.12.2010

Если вы используете более новую версию Python Development Server (выпуски> 1.7.6 или март 2013 г. и более поздние версии), эти шаги кажутся правильными:

  1. Включите в свой сценарий следующее:

    import logging logging.debug("something I want to log")

  2. И на этой странице документов установите флаг, перейдя на Правка> Настройки приложения> Настройки запуска> Дополнительные флаги командной строки и добавление,

    --log_level=debug

person user809695    schedule 17.03.2014

Вы также должны взглянуть на FirePython. Это позволяет вам получать сообщения журнала сервера в firebug.

http://appengine-cookbook.appspot.com/recipe/firepython-logger-console-inside-firebug/

person Sam    schedule 07.04.2009

Посмотрите мой онлайн-интерпретатор Python, работающий в Google App Engine, на моем веб-сайте, Learn Python. Возможно, это то, что вы ищете. Просто используйте print repr (переменную) для того, на что вы хотите посмотреть, и выполняйте столько раз, сколько хотите.

person Ron Reiter    schedule 30.08.2011

Здравствуйте, я использую версию 1.8.6 GoogleAppEngineLauncher, вы можете использовать флаг, чтобы установить уровень журнала сообщений, который вы хотите видеть, например, для сообщений отладки:

--dev_appserver_log_level debug

Используйте его вместо --debug (см. Ответ @Christopher).

person Abimael    schedule 22.11.2013

GAE фиксирует стандартную ошибку и выводит ее на консоль или в журнал.

print >> sys.stderr, "Something to log."
person bugloaf    schedule 24.07.2013

Используйте log.setLevel (Level.ALL) для просмотра сообщений

Уровень фильтрации сообщений по умолчанию выглядит как «ошибка». Я не видел никаких полезных сообщений журнала, пока не использовал метод setLevel (), чтобы сделать видимыми сообщения .info и .warning.

Текст, напечатанный в System.out, тоже не отображался. Кажется, это интерпретируется как сообщения уровня log.info ().

person Ribo    schedule 24.09.2013

Надеюсь, я отвечаю на вопрос. Сообщения журнала печатаются в журнале AppEngine, а не в терминале.

Вы можете запустить его , нажав кнопку журналов на панели запуска AppEngine

person user5751790    schedule 06.01.2016

Использование модуля logging является хорошей практикой, но это не обязательно. .

Вы можете просто делать старые добрые print()s для записи в консоль журнала Google App Engine.

person clickbait    schedule 30.07.2018