我在后端有一个长时间运行的进程,我看到日志只存储每个请求的最后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行。
结果如下:
logservice.flush()
电话,问题没有解决。我正在使用python;)
答案 0 :(得分:1)
The Google docs建议冲洗应该完全符合你的要求。如果您的冲洗工作正常,您将看到" partial"请求日志标记为" flush"和原始请求的开始时间。
要检查的几件事情:
我认为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)使用多个版本