python – GoogleAppEngineLauncher在哪里保留本地日志文件?

前端之家收集整理的这篇文章主要介绍了python – GoogleAppEngineLauncher在哪里保留本地日志文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
GoogleAppEngineLauncher可以在开发过程中在我的Mac上运行时显示我的应用程序的本地日志文件.但是,我无法更改字体大小,所以我想使用tail命令来自己观看日志文件.

这是一个耻辱,但我找不到日志文件.它们不在/ var / log /,〜/ Library / Logs或/ Library / Logs下.你知道他们在哪里吗?

(也许没有物理文件,只是python开发环境的stdout,所以日志只能在启动器应用程序中使用.)

解决方法

您猜测,并且可以通过研究源文件/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的跟踪器,作为功能请求的一部分我建议,希望它很快被接受! – )

猜你在找的Python相关文章