3

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

虽然这对于前端处理程序可能不是问题,但我发现对于后端处理程序可能会无限期运行非常不方便。

我尝试刷新日志以查看它是否创建了新的日志记录条目,但没有。这似乎很错误,我确信必须有一个简单的解决方案。请帮忙!

感谢stackoverflowians!

更新:已经有人在appengine google 群里问过这个问题,但是没有答案....

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

编辑2:我做了以下测试来尝试大卫波普的建议:

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 下载了日志,你猜怎么着?...所有的 AppLogs 都在那里!我通常在 Web UI 中浏览日志,我不确定是否可以获得舒适的工作流程来以这种方式查看日志......对我来说理想的解决方案是文档中描述的解决方案。
  • 我的应用程序自动刷新设置设置为默认值,我在某个时候玩过它们,但我发现问题仍然存在,所以我没有设置它们。

我正在使用 python ;)

4

2 回答 2

1

谷歌文档建议冲洗应该完全符合您的要求。如果您的刷新工作正常,您将看到带有“flush”标签的“部分”请求日志以及发起请求的开始时间。

有几件事要检查:

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

如果您使用的是Java,我假设有相应的链接;你没说。

于 2013-02-03T06:00:49.407 回答
0

我认为可能有帮助的是使用如下所示的定时/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) 使用多个版本

于 2013-01-31T18:52:27.427 回答