正如你猜测,并通过研究源文件确认
/usr/local/google_appengine/google/appengine/tools/dev_appserver.py,该日志不会被写入到磁盘(一个
cStringIO.StringIO实例用于保留在内存中,作为代码的其余部分
是 面向写他们“一类文件对象”)。
我建议编写自己的应用服务器脚本,该脚本将import
dev_appserver,subclasses
dev_appserver.ApplicationLoggingHandler和重写 一种
方法:
from google.appengine.tools import dev_appserverclass MyHandler(dev_appserver.ApplicationLoggingHandler): def __init__(self, *a, **k): dev_appserver.ApplicationLoggingHandler.__init__(self, *a, **k) self.thefile = open('/tmp/mylog.txt', 'w') def emit(self, record): dev_appserver.ApplicationLoggingHandler(self, record) self.thefile.write(str(record) + 'n') self.thefile.flush()您还需要确保使用此类而不是标准类,例如,通过对调度程序进行子类化或确保使用其依赖项注入功能。(
dev_appserver_main.py我认为,您可以更好地控制它)。
我认为这种自定义方法要麻烦得多(毕竟,将日志写入文件是完全正常的-要么根据需要显示不同的日志,要么稍后再使用一些辅助脚本进行处理),因此,我还建议您在App
Engine的跟踪器上提出功能请求:
dev_appserver.py应再接受一个标志,如果指定了该标志,则会提供将日志写入磁盘的路径。
而且,老实说,如果我现在自己需要此功能,我会以肮脏的方式进行:编辑该
.py文件(及其相关文件
_main.py)以添加上述标记及其用途。总共应该有十几行,比我刚才概述的“规范”方法容易得多。当然,这
是 肮脏的,因为每当有一个新的SDK,你将不得不重新应用补丁,并再次,再次…这就是为什么人们应该 还
提出了基于GAE的跟踪补丁,作为特征请求的一部分我建议,希望它能很快被接受!-)



