【问题标题】:Python 3.7 - Logger not showing any log on GCP LOG ViewerPython 3.7 - 记录器未在 GCP 日志查看器上显示任何日志
【发布时间】:2019-02-24 14:03:26
【问题描述】:

我制作了一个名为“logger”的装饰器,并使用它在控制台上显示日志。

在我的 python 2.7 中一切正常,但在我的 python 3.7 代码中,它不会在 GCP 日志查看器中打印任何日志。 (我的代码部署在GCP标准环境)

我尝试设置此代码,但它不起作用。

logging.getLogger().setLevel(logging.INFO)

这是我的简单记录器装饰器

def logger(func):
  def wrapper(*args, **kwargs):
    logging.info('INSIDE %s PARAMETERS: %s', func.__name__, args)
    res = func(*args, **kwargs)
    logging.info('OUTSIDE %s OUTPUT: %s', func.__name__, res)
    return res

  return wrapper

即使是简单的logging.info 语句也不起作用。

我已经尝试了所有的日志记录,但在 GCP 日志查看器上什么都没有打印出来。

logging.info("Text info")
logging.debug("Text debug")
logging.warning("Text warning")
logging.error("Text error")
logging.critical("Text critical")

这里是日志查看器

【问题讨论】:

    标签: python-3.x logging google-cloud-platform


    【解决方案1】:

    我将以下应用部署到 App Engine:

    app.yaml:

    运行时:python37

    requirements.txt:

    Flask==1.0.2
    

    main.py:

    from flask import Flask
    
    import logging
    logging.getLogger().setLevel(logging.INFO)
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        logging.info("Text info")
        logging.debug("Text debug")
        logging.warning("Text warning")
        logging.error("Text error")
        logging.critical("Text critical")
        return 'Hello World!'
    

    当我在请求后查看应用程序的 Stackdriver 日志时,我看到了 INFOWARNINGERRORCRITICAL 的日志消息,符合预期。

    您是否可能正在其他地方寻找日志?从 App Engine 信息中心,您可以转到

    服务 > [您的服务] > 诊断 > 工具 > 日志

    为您的服务查找日志。

    【讨论】:

    • 看我在我的问题中添加了截图
    • 你能添加更多关于你如何使用装饰器的上下文吗?
    • 我在每个方法之前都使用了@logger 装饰器。因此它会记录调用函数名称、参数,并在完成时记录退出函数名称和返回参数。整个机制工作正常,并在 GCP 上登录 2.7。即使是 3.7 代码也可以登录我的终端,但现在可以使用 GCP 日志查看器。
    • 您是将其部署到 App Engine 还是 Cloud Functions?
    • 不,@Dustin,它在 py3.7 中没有按预期工作,我已将代码部署到 GCP。
    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多