在开发过程中,当我的应用程序在Mac上运行时,GoogleAppEngineLauncher可以显示我的应用程序的本地日志文件。但是,我无法在此处更改字体大小,因此我想使用该tail
命令自己查看日志文件。
很遗憾,但是我找不到日志文件。他们不是下/var/log/
,~/Library/Logs
或/Library/Logs
。你知道他们在哪里吗?
(也许没有物理文件,只有python开发环境的标准输出,因此日志仅在启动器应用程序中可用。)
正如你猜测,并通过研究源文件确认/usr/local/google_appengine/google/appengine/tools/dev_appserver.py
,该日志不会被写入到磁盘(一个cStringIO.StringIO
实例用于保留在内存中,作为代码的其余部分
是 面向写他们“一类文件对象”)。
我建议编写自己的应用服务器脚本,该脚本将import
dev_appserver
,subclassesdev_appserver.ApplicationLoggingHandler
和重写 一种
方法:
from google.appengine.tools import dev_appserver
class 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的跟踪补丁,作为特征请求的一部分我建议,希望它能很快被接受!-)