AppEngine: регистрация событий из браузера (JavaScript) - PullRequest
0 голосов
/ 02 марта 2012

Может кто-нибудь показать мне пример регистрации событий на стороне клиента в JavaScript в модуле журналирования Python на стороне сервера AppEngine?Я хотел бы регистрировать события тех же пяти уровней серьезности, но из кода на стороне клиента, а не только кода на стороне сервера, как описано в документах Журнала App Engine .

есть встроенный обработчик для регистрации, отлично.Если нет, и я должен написать обработчик на стороне сервера, я хотел бы увидеть пример.

Для любопытных я пытаюсь полностью создать пользовательский интерфейс в браузере, который взаимодействует только с сервером.для данных.Было бы неплохо регистрировать события, происходящие в браузере, которые иначе не вызвали бы вызов на сервер.

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Что касается того, почему вы хотите добиться этого, используя код на стороне клиента, лучше меня. Но я не думаю, что в app-engine есть поддержка по умолчанию. Кроме того, это будет излишне добавлять к вашему счету за пропускную способность, если вы хотите обнаружить свои ошибки и затем отправить их обратно на сервер для регистрации.

Могу я спросить, почему вы не хотите использовать обычные logging.debug, logging.info и logging.error в python? Вы даже можете отфильтровать свои сообщения в консоли администратора по серьезности, времени, а что нет.

Редактировать

Подождите, я правильно понимаю -

  1. Вы столкнулись с ошибкой в ​​своем javascript - скажем, например, неопределенный var, при выполнении операции.
  2. Вы хотите записать это в журнал вашего движка приложения

Если это так, вы можете добиться этого с помощью простых вызовов ajax. Псевдокод, указанный ниже

//JS
//Make ajax call to a method on your server, providing
//error severity, error location, page, action performed

//Python
#Method which takes in error severity, plus other details mentioned above
#Based on the severity, use either, debug, info, error methods 
#(already available in the logging module) 
#to log your statements, which will then be available on your admin console

Это не проверено, но оно должно работать как рекламируется

0 голосов
/ 14 марта 2012

JavaScript не слишком сложен. Вот модуль JavaScript, смоделированный после модуля Python logging. Он использует JQuery для отправки сообщения журнала на сервер по URL-адресам, таким как /log/debug или /log/info.

// logging.js
var logging = {};

logging.log = function log(lvl, msg) {
  $.ajax({
    url: "/log/" + lvl,
    type: "POST",
    contentType: "text/plain",
    data: msg,
  });
};

logging.debug = function debug(msg) {
  logging.log("debug", msg);
};

logging.info = function info(msg) {
  logging.log("info", msg);
};

logging.warning = function warning(msg) {
  logging.log("warning", msg);
};

logging.error = function error(msg) {
  logging.log("error", msg);
};

logging.critical = function critical(msg) {
  logging.log("critical", msg);
};

return logging;

Чтобы использовать его, просто звоните как logging.info("log message here").

Серверный код Python для обработки этих запросов не сложен. Вот отображение URL.

# main.py (some stuff omitted for clarity)
import logging
import wsgiref.handlers
from google.appengine.ext import webapp

urlmap = [(r"/log/(.+)", handlers.LoggingHandler),]
application = webapp.WSGIApplication(urlmap)
wsgiref.handlers.CGIHandler().run(application)

А вот и обработчик журналирования.

# handlers.py
import logging
from google.appengine.ext import webapp

class LoggingHandler(webapp.RequestHandler):
  def post(self, lvl):
    if lvl not in ("debug", "info", "warning", "error", "critical",):
      self.error(404)
      self.response.out.write("Unknown log level %s" % lvl)
      return
    msg = self.request.body
    getattr(logging, lvl)(msg)
    response = "Message logged: %s %s" % (lvl.upper(), msg))
    self.response.out.write(response)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...