后端记录深度

时间:2013-01-23 11:18:44

标签: google-app-engine

我在后端有一个长时间运行的进程,我看到日志只存储每个请求的最后1000个日志记录调用。

虽然这可能不是前端处理程序的问题,但我觉得后端非常不方便,后端可能无限期地运行。

我已经尝试刷新日志以查看它是否创建了新的日志记录条目,但事实并非如此。这似乎是错误的,我相信必须有一个简单的解决方案。请帮助!

感谢stackoverflowians!

更新:在appengine google群组中有人already asked,但没有答案......

编辑:我关心的'深度'不是RequestLogs的总数,这很好,但是RequestLog中的AppLog数量(限制为1000)。

编辑2:我做了以下测试以尝试David Pope的建议:

def test_backends(self):
    launched = self.request.get('launched')
    if launched:
        #Do the job, we are running in the backend
        logging.info('There we go!')
        from google.appengine.api.logservice import logservice

        for i in range(1500):
            if i == 500:
                logservice.flush()
                logging.info('flushhhhh')
            logging.info('Call number %s'%i)
    else:
        #Launch the task in the backend
        from google.appengine.api import taskqueue
        tq_params = {'url': self.uri_for('backend.test_backends'),
                     'params': {'launched': True},
                     }
        if not DEBUG:
            tq_params['target'] = 'crawler'
        taskqueue.add(**tq_params)

基本上,这会创建一个后端任务,记录1500行,刷新数字500.我希望看到两个RequestLog,第一个有500行,第二个有1000行。

结果如下:

  • 我没有得到文档建议的结果,手动刷新日志不会创建新的日志条目,我仍然只有一个带有1000行的RequestLog。我不久前已经看过这部分文档了,但是我得到了同样的结果,所以我觉得我不理解文档的内容。无论如何,当时我在我的后端代码中留下了logservice.flush()电话,问题没有解决。
  • 我用appcfg.py下载了日志,猜猜是什么?... 所有AppLog都在那里!我经常浏览网页用户界面中的日志,我不确定我是否可以获得一个舒适的工作流程,以这种方式查看日志...对我来说理想的解决方案将是文档中描述的解决方案。
  • 我的应用 autoflush设置设置为默认,我在某个时间使用它们,但我看到问题仍然存在,所以我让它们未设置。

我正在使用python;)

2 个答案:

答案 0 :(得分:1)

The Google docs建议冲洗应该完全符合你的要求。如果您的冲洗工作正常,您将看到" partial"请求日志标记为" flush"和原始请求的开始时间。

要检查的几件事情:

  • 您可以发布刷新日志的代码吗?它可能无法正常工作。
  • 您是否使用GAE Web控制台查看日志?该限制可能只是一个Web UI限制,如果您实际通过API获取日志,那么所有数据都将存在。 (如果冲洗不能正常工作,这应该只是一个问题。)
  • 检查您的应用程序autoflush settings

我认为Java有相应的链接,如果这是您正在使用的内容;你没有说。

答案 1 :(得分:0)

我认为可能有帮助的是使用如下所示的timed / cron脚本从工作站/服务器每小时运行一次

appcfg.py --oauth2 request_logs appname/ output.log --append

这应该给你一个完整的日志 - 我自己没有测试过

我做了一些阅读,似乎CRON已经是appcfg的一部分了     https://developers.google.com/appengine/docs/python/tools/uploadinganapp#oauth

appcfg.py [options] cron_info <app-directory>
Displays information about the scheduled task (cron) configuration, including the
expected times of the next few executions. By default, displays the times of the
next 5  runs. You can modify the number of future run times displayed
with the -- num_runs=... option.

根据你的评论,我会尝试。

1)编写自己的记录器类

2)使用多个版本