【问题标题】:logservice.fetch() is not returning anythinglogservice.fetch() 没有返回任何东西
【发布时间】:2012-04-05 00:33:48
【问题描述】:

以下代码用于从应用引擎获取日志以进行进一步处理。但是我现在不知道如何使用 logservice.fetch 的结果来访问日志消息??

import cgi
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.api.logservice import logservice
logservice.AUTOFLUSH_ENABLED = False

class MainPage(webapp.RequestHandler):
    def get(self):  
        requestlogs = logservice.fetch(start_time=1332200000, end_time=1332249954, offset=None, minimum_log_level=logservice.LOG_LEVEL_INFO, include_incomplete=False, include_app_logs=True, version_ids=None, batch_size=None)
        self.response.out.write(requestlogs)
        c=0
        for iter in requestlogs:
           c=c+1  
        print c
application = webapp.WSGIApplication([('/logs', MainPage)], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

【问题讨论】:

  • 您确定它没有返回任何内容,或者您​​的页面没有显示任何内容?在 webapp 请求处理程序中使用 print 是个坏主意;使用self.response.out.write()
  • 嗯....实际上它给出了一个空白页....好的.....我会尝试 self.response.out.write() ...顺便说一句logservice.fetch 实际上返回.....我的意思是返回的对象的属性是什么.....我不知道在获取日志后如何访问日志消息
  • @MayankKhandelwal 这都在文档中——你读过吗?
  • 我确实读过它.....不知何故......无法实现它

标签: python api google-app-engine logging


【解决方案1】:

在您的情况下,代码如下所示:

from google.appengine.api import logservice

MAX_LOGS_TO_READ = 10

class MainPage(webapp.RequestHandler):

  def get(self):  
    request_logs = logservice.fetch()
    current_log = 0
    for log in request_logs:
      if current_log > MAX_LOGS_TO_READ:
        break
    self.response.out.write(log.combined)

几个cmets..

【讨论】:

  • 我一直在使用你建议的稍微修改过的代码.....到目前为止它工作正常......但是现在当我想访问一整天的日志文件时,我得到了以下错误----- Status:500 OverQuotaError: The API call logservice.Read() required more quota than is available
猜你喜欢
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 2019-04-22
  • 1970-01-01
  • 2014-04-28
  • 2011-05-04
相关资源
最近更新 更多