加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:22:22 所属栏目:Python 来源:网络整理
导读:GoogleAppEngineLauncher可以在开发过程中在我的Mac上运行时显示我的应用程序的本地日志文件.但是,我无法更改字体大小,所以我想使用tail命令来自己观看日志文件. 这是一个耻辱,但我找不到日志文件.它们不在/ var / log /,?/ Library / Logs或/ Library / Log
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的跟踪器,作为功能请求的一部分我建议,希望它很快被接受! – )

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读