GoogleAppEngineLauncher可以在开发过程中在我的Mac上运行时显示我的应用程序的本地日志文件.但是,我无法更改字体大小,所以我想使用tail命令来自己观看日志文件.
这是一个耻辱,但我找不到日志文件.它们不在/ var / log /,〜/ Library / Logs或/ Library / Logs下.你知道他们在哪里吗?
解决方法
您猜测,并且可以通过研究源文件/usr/local/google_appengine/google/appengine/tools/dev_appserver.py来确认日志未被写入磁盘(cStringIO.StringIO实例用于将它们保存在内存中),因为代码的其余部分是面向将其写入到类文件的对象中).
我会推荐的是编写自己的应用服务器脚本,它导入dev_appserver,子类dev_appserver.ApplicationLoggingHandler,并覆盖只有一种方法:
from google.appengine.tools import dev_appserver class MyHandler(dev_appserver.ApplicationLoggingHandler): def __init__(self,*a,**k): dev_appserver.ApplicationLoggingHandler.__init__(self,**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可以让你更好地控制,我想)
我认为这种定制方法比它应该更麻烦(这是非常正常的,希望将文件写入文件,毕竟,要么按照需要不同地显示它们,要么稍后用一些辅助脚本处理它们)所以我还建议在应用引擎的跟踪器上添加一个功能请求:dev_appserver.py应该再接受一个标志,如果指定的话,给出将日志写入磁盘的路径.
而且,说实话,如果我现在需要这个功能,我自己会做一个肮脏的方式:编辑.py文件(及其相关的_main.py)来添加标志及其使用.这应该是十几条线,比我刚刚概述的“规范”方式容易得多.当然,它是脏的,因为每次有一个新的SDK你必须重新应用补丁,再一次,这又是为什么还应该提出补丁在GAE的跟踪器,作为功能请求的一部分我建议,希望它很快被接受! – )