Google app engine AppEngine开发服务器上的Google KMS-日志混乱

Google app engine AppEngine开发服务器上的Google KMS-日志混乱,google-app-engine,google-app-engine-python,google-cloud-kms,Google App Engine,Google App Engine Python,Google Cloud Kms,这是一个已知的问题: 此外,我还提出了一个关于相关但有问题的副作用的新问题 也就是说,Google Cloud API发现似乎希望在AppEngine沙箱之外走很多路。这本身不是问题,但它使测试和调试变得非常困难,因为每次尝试都会被记录下来,产生数百行代码,如下所示: 信息2017年7月3日14:44:51沙箱阻止访问文件“/用户” 信息2017年7月3日14:44:51如果是静态文件,请检查app.yaml中是否设置了application\u readable:true 信息2017年7月3

这是一个已知的问题:

此外,我还提出了一个关于相关但有问题的副作用的新问题

也就是说,Google Cloud API发现似乎希望在AppEngine沙箱之外走很多路。这本身不是问题,但它使测试和调试变得非常困难,因为每次尝试都会被记录下来,产生数百行代码,如下所示:

信息2017年7月3日14:44:51沙箱阻止访问文件“/用户”

信息2017年7月3日14:44:51如果是静态文件,请检查app.yaml中是否设置了
application\u readable:true

信息2017年7月3日14:44:52沙箱阻止访问文件“/usr/lib/Acrobat9/Resource/CMap”

信息2017年7月3日14:44:52如果它是一个静态文件,请检查您的app.yaml中是否设置了
application\u readable:true

信息2017年7月3日14:44:52沙箱阻止访问文件“/usr/lib/Acrobat8/Resource/CMap”

信息2017年7月3日14:44:52如果它是一个静态文件,请检查您的app.yaml中是否设置了
application\u readable:true

有没有办法禁用或静默这些请求或日志

编辑*通过在
stub.py
中添加
traceback.print\u stack()
log\u access\u check\u fail
打印的众多结果之一(很抱歉,此处不清晰):

测试#1:Sentry.io的Raven导入
pkg#U资源

必须有更好的方法来表示堆栈溢出时的堆栈跟踪:)

对我来说,这些消息似乎来自名为stubs.py的GAE(.local)文件

  • 在我的第一个例子中,stubs.py正在查找不存在的文件。因此,您可能需要检查“/usr/lib/Acrobat8/Resource/CMap”是否确实存在。然后,从stubs.py开始,尝试找出答案

  • 我的项目正在使用web.py,突然我又开始收到(stubs.py)消息,这次是关于.pyc文件的。我在app.yaml文件的底部放了一个,它确实抑制了消息,但我还没有测试我的应用程序是否仍然完全编译

    skip_files:
    - ^(.*/)?\.pyc$
    
  • 更多关于pythongae运行时和沙箱的信息。

    我是一名全职工程师,负责开发appserver。 此日志消息由/google/appengine/tools/devappserver2/python/stubs.py报告,方法为
    log\u access\u check\u fail

    我们添加此日志消息是为了提醒用户dev_appserver阻止文件访问的行为

    建议的解决方法: dev_appserver.py--日志级别警告

    --log_level设置本地python运行时进程中的日志级别。日志访问检查失败()设置为INFO,不会被记录。注意,此标志还将阻止应用程序中的其他信息级别日志记录


    同时,我们正在修复此日志访问检查失败方法。这可能会降低日志访问检查失败()日志记录级别以进行调试。

    这很烦人,而且有一个解决方案

    与此同时,我们可以过滤掉这些消息,但我们需要找出它们使用的是哪个
    logger
    。有关如何处理日志记录的更多信息,请参阅。查看
    stubs.py的源代码,我发现:

    logging.info('Sandbox prevented access to file "%s"', filename)
    logging.info('If it is a static file, check that '
               '`application_readable: true` is set in your app.yaml')
    
    因此,他们正在使用根记录器(通常是不好的做法)。要在根记录器上筛选出这些消息,请将以下内容添加到
    appengine\u config.py

    import logging
    
    class StubsFilter(logging.Filter):
    
        def filter(self, record):
            return 'stubs.py' != record.filename
    
    logging.root.addFilter(StubsFilter())
    

    我在最新的“传统”sdk(1.9.56)中注意到了这一点。我必须研究是否可以在不抑制其他有用日志消息的情况下抑制这些消息。但我可以说,它们没有出现在1.9.50中,所以如果可以接受对sdk进行降级,您可以这样做。@snakecharmerb好主意,使用gcloud如何降级?谢谢@Shaun
    gcloud组件更新——版本xxx.x.x
    会将整个gcloud sdk升级或降级到提供的版本;我看不到升级或降级特定子组件的方法。谢谢,这很有效@肖恩补充道,他可以过滤掉这些信息,而无需降级GCK。FWIW,我认为日志访问失败可能是有用的调试信息,所以最好不要完全禁用它们(或者可以选择使用标志启用它们);更好的答案可能是修复发现API(如果可能的话),使其不在dev_appserver habitat之外进行检查。实际上,当试图用mykms.py复制您的问题(在Mac OS和Ubuntu上)时[1]。我没有看到使用“/Users”或“/usr/lib/Acrobat9/Resource/CMap”进行访问的尝试。您能否确认这些尝试是由discovery api而不是oauthclient2或您的应用程序代码进行的?谢谢[1]@KaiWang,我看到导入该软件包的应用程序中有
    /usr/lib/Acrobat…
    日志消息。@KaiWang是否有公开的bug报告,我们可以在其中对该行为进行评论?我对此有更多的评论,但评论不是讨论的最佳位置。@KaiWang它确实可以由oauthclient2进行讨论-问题始于我开始使用discovery API时,但它确实可以通过oauth2进行讨论。我们也包括reportlab,但它已经存在多年了。
    logging.info('Sandbox prevented access to file "%s"', filename)
    logging.info('If it is a static file, check that '
               '`application_readable: true` is set in your app.yaml')
    
    import logging
    
    class StubsFilter(logging.Filter):
    
        def filter(self, record):
            return 'stubs.py' != record.filename
    
    logging.root.addFilter(StubsFilter())