GAE - Python 3.7 - 如何登录?

2024-03-13

我有一个 python 3.7 中的谷歌应用程序引擎项目,我想在其中编写一些日志。 我习惯在应用程序引擎 python 2.7 中编程,并且使用简单的代码:

 logging.info('hi there!')

将任何日志写入谷歌云日志控制台。 上面的命令现在不再起作用,它说:

logging has no attribute 'info'

我搜索了一下,发现了这个可能的新代码

from flask import Flask
from google.cloud import logging

app = Flask(__name__)

@app.route('/l')
def hello():
    logging_client = logging.Client()
    log_name = LOG_NAME
    logger = logging_client.logger(LOG_NAME)
    text = 'Hello, world!'
    logger.log_text(text, severity='CRITICAL')
    return text

上面的代码在堆栈驱动程序报告页面中没有给出任何错误,但在日志页面中根本不显示任何内容。

那么如何在 python3.7 中为我的应用程序引擎项目编写日志呢?


恕我直言,第二代标准环境(包括 python 3.7)比第一代标准环境(包括 python 2.7)更接近灵活环境。

如果相应的功能或多或少被替代的、更通用的方法所覆盖,则许多具有第一代定制版本(由 GAE 团队维护)的 API 尚未(或至少尚未)移植到第二代中。在灵活的环境中使用(其中大多数基于由 GAE 以外的团队开发和维护的服务)。

您会注意到这两个迁移指南中的许多服务部分之间的相似性(这使我得出了上述总结结论):

  • 了解 App Engine 标准环境中 Python 2 和 Python 3 之间的差异 https://cloud.google.com/appengine/docs/standard/python3/python-differences
  • 将服务从标准环境迁移到灵活环境 https://cloud.google.com/appengine/docs/flexible/python/migrating(即第一代标准到灵活)

日志记录是两个指南中列出的服务之一。第一代使用了标准python的定制版本logging库(在 Stackdriver 成为独立服务之前)。对于第二代,日志记录被简单地委托使用现在普遍可用的Stackdriver 日志记录 https://cloud.google.com/logging/docs/服务(这就是您显示的代码片段的来源)。来自日志记录(在第一个指南中):

请求日志不再自动关联,但仍会 显示在 Stackdriver Logging 中。使用 Stackdriver Logging 客户端 库来实现您所需的日志记录行为。

您显示的代码片段确实对应于 Stackdriver Logging。但你似乎是使用客户端库 https://cloud.google.com/logging/docs/reference/libraries#using_the_client_library直接地。我不知道这是否是一个问题(GAE 通常有点不同),但也许你也可以尝试使用标准 Python 日志记录 https://cloud.google.com/logging/docs/setup/python反而:

  • 将库连接到 Python 日志记录 https://cloud.google.com/logging/docs/setup/python#connecting_the_library_to_python_logging:

通过附加 Stackdriver 将所有日志条目发送到 Stackdriver 将处理程序记录到 Python 根记录器,使用setup_logging辅助方法:

# Imports the Google Cloud client library
import google.cloud.logging

# Instantiates a client
client = google.cloud.logging.Client()

# Connects the logger to the root logging handler; by default this captures
# all logs at INFO level and higher
client.setup_logging()
  • 使用 Python 根记录器 https://cloud.google.com/logging/docs/setup/python#using_the_python_root_logger:

连接处理程序后,默认情况下,任何日志都会处于 INFO 级别或 您的应用程序中发出的更高的将被发送到 Stackdriver 日志记录:

# Imports Python standard library logging
import logging

# The data to log
text = 'Hello, world!'

# Emits the data using the standard logging module
logging.warn(text)

其中还有一些特定于 GAE 的注释(但我不确定它们是否也涵盖第二代标准环境):

谷歌应用引擎 https://cloud.google.com/appengine/docs/授予日志编写者角色 https://cloud.google.com/logging/docs/access-control#permissions_and_roles默认情况下。

无需使用 Python 的 Stackdriver Logging 库即可使用 明确提供凭据。

自动为 App Engine 启用 Stackdriver 日志记录 应用程序。无需额外设置。

Note:日志写入stdout and stderr会自动发送到 Stackdriver Logging,无需使用 适用于 Python 的 Stackdriver 日志库。

也许值得注意的是查看日志 https://cloud.google.com/logging/docs/view/overview在第一代标准环境之外也可能有所不同(其中应用程序日志将与请求日志紧密相关)。

还有在 App Engine 应用中使用 Stackdriver 日志记录 https://cloud.google.com/appengine/articles/logging指导。它没有具体提到第二代标准环境(因此可能需要更新),但对灵活的环境有很好的提示might有用的。例如链接应用程序日志和请求 https://cloud.google.com/appengine/articles/logging#linking_app_logs_and_requests部分might如果丢失的请求日志相关性与其有任何关系,那么我们会感兴趣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GAE - Python 3.7 - 如何登录? 的相关文章

  • 使用 Golang 通道处理 HTTP 请求

    我正在尝试构建一个简单的 Golang Appengine 应用程序 它使用通道来处理每个 http 请求 原因是我希望每个请求执行合理的大型内存计算 并且每个请求都以线程安全的方式执行 即来自并发请求的计算不会混合 这一点很重要 本质上
  • 如何在IntelliJ中快速输入记录器定义?

    是否有一些实时模板或其他东西可以将记录器定义添加到类中 在 Eclipse 中我有一个模板 private static final Logger log LoggerFactory getLogger enclosing type cla
  • App Engine 上的 HTTP 到 HTTPS 重定向灵活

    我已经遵循了这个答案 在谷歌云中从http重定向到https https stackoverflow com questions 37135051 redirect from http to https in google cloud但目前
  • 通过端点 API 将图像读入 protorpc 消息

    将用户的图片接收到我的 endpoints method我用吗messages BytesField as in image messages BytesField 1 stuff messages StringField 2 是的 这是正
  • Restlet 和 MULTIPART_FORM_DATA 或通过 Restlet 将文件放在 Google App Engine 上的其他方式

    我尝试通过 Restlet 接收文件 但只获得完整的 MULTIPART FORM DATA 如何提取我的特定文件 我找到了一些代码块 但它们的类型不可用 RESTlet 如何处理多部分 表单数据请求 https stackoverflow
  • 日志记录在 Android 设备上实际上有什么作用?

    我一直在 Android 示例中看到这样的代码 try catch Exception e Log e Error e getMessage 什么是Log e实际上在物理设备上做什么 它进入系统日志 开发人员可以通过 SDK 工具访问该日志
  • AppEngine:获取当前服务应用程序版本

    有没有一种简单的方法可以获取 AppEngine 中当前的服务应用程序版本 os environ CURRENT VERSION ID
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • 关闭应用程序后如何调试

    我正在尝试重现问题 这需要在特定位置关闭并重新打开我的应用程序 这是我的问题 1 如何查看我的日志 使用NSLog命令 当我的 iPhone 未连接到 XCode 时 2 是否可以将iPhone模拟器的特定位置 例如市中心 设置为默认位置
  • 如何使用 keycloak 强制每个客户端登录(最佳实践?)

    我们目前正在实施 keycloak 但我们面临着一个问题 我们不确定解决它的最佳方法是什么 我们有不同的网络应用程序使用单点登录 并且运行良好 我们遇到的问题是 当我们在一个 Web 应用程序中使用 sso 登录 然后在另一个 Web 应用
  • 安装 geopandas 会卸载底图,反之亦然

    我需要一个同时包含底图和 geopandas 的 Python 环境 但安装其中一个会删除另一个 是否有两种方法都可以 或者是否有一种合理的方法可以在同一脚本中的解释器之间切换 我知道底图因 cartopy 而被贬值 但我正在使用底图 这就
  • XcodeColors 在 XCode 5 中不起作用

    我尝试安装XcodeColors在 XCode 5 中 但不幸的是 它不能与我从 XCode 4 6 获得的旧插件一起使用 下一步 我检查了 github 网站 在那里我看到了以下拉取请求 提供了 XCode 5 的工作版本 https g
  • NoSuchMethodError:将 Firebase 与应用程序引擎应用程序集成时

    我试图将 firebase 实时数据库与谷歌应用程序引擎应用程序集成 我在调用时收到此错误 gt DatabaseReference ref FirebaseDatabase gt getInstance gt getReference t
  • ImportError:在 Google 应用引擎中找不到 django.utils

    当我在 google app engine 项目中使用 django utils 中的 simplejson 时 出现此错误 Traceback most recent call last File base python27 runtim
  • 使用 Python 读取 App Engine 上的文件?

    是否可以在 GAE 上打开文件来读取其内容并获取最后修改的标签 我收到 IOError Errno 13 文件无法访问 我知道我无法删除或更新 但我相信阅读应该是可能的 有人遇到过类似的问题吗 os stat f r st mtim 您可能
  • 如何配置应用程序中的所有记录器

    Python 的日志记录模块允许模块或类定义自己的记录器 不同的记录器可以有不同的处理程序 其中一些可能选择记录到文件 而另一些则选择记录到标准输出 现在 我的应用程序使用其中几个模块 每个模块都有自己的记录器 这些记录器具有各种处理程序
  • Google App Engine 数据存储区中实体组的吞吐量限制究竟是多少?

    该文档描述了数据存储中实体组的吞吐量限制 但对于限制的具体内容含糊其辞 我的困惑有两部分 1 限制什么 具体来说是 写入次数 写入数据存储的事务数量 无论是读取还是写入数据存储 事务数量如何 2 限制的类型是什么 具体来说是 人为强制执行每
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 为 Logstash 中的新字段设置 Elasticsearch Analyzer

    通过使用GROK filter 我们可以向Logstash添加新字段 但是 我想知道如何为该特定字段设置分析器 例如 我有一个新的 id 字段 其中有一个字段 例如a b 但是 Elasticsearch 附带的普通分析器会将其分解为a a

随机推荐

  • 将 ASP.NET 行添加到 ListBox

    我需要在 ASP NET 中的列表框中添加一行 以便与用户可以选择的许多选项进行一定的分离 目前 我们有超过 20 个不同的选项供用户选择 我需要将最受欢迎的放在最上面 我的逻辑是将流行的选项放在顶部 但认为列表框中的一行将帮助用户将它们与
  • 无法使用 Selenium WebDriver 在 Chrome 中加载默认配置文件

    我正在使用 Selenium WebDriver 在需要 http 身份验证的页面上执行某些操作 我已经登录我的默认配置文件 但 selenium chromedriver 会自动为每次使用使用新的配置文件 因此我无法通过身份验证阶段 因此
  • libcurl 回调 w/c++ 类成员

    取自libcurl 编程教程 http curl haxx se libcurl c libcurl tutorial html在 libcurl 网站上 libcurl 与 C 使用 C 时基本上只需要记住一件事 在连接 libcurl
  • 未注入通过 RequireJS 从 CDN 加载 Angular

    在我的项目中 我想使用 RequireJS 并引导我的应用程序 如下所示 requirejs config baseUrl scripts vendor paths jquery https ajax googleapis com ajax
  • CustomAttribute反映html属性MVC5

    希望找到一种方法 当在 MVC5 中使用 Custom 属性或最好使用 RegularExpressionAttribute 装饰模型中的属性时 html 控件将包含它作为控件的另一个属性 例如 class CoolModel Custom
  • Hibernate 查询语言中四舍五入到小数点后两位

    你好 有人可以帮我如何在 hql 中四舍五入到小数点后两位吗 我在网上找不到任何东西 以下是我的查询 Select p amount as amt p desc from pay p register r where r type 1 an
  • 将字符串中匹配的正则表达式值替换为字典中的正确值

    我有一根绳子 var text the animal jumped over the description fox 和一本字典 var dictionary animal dog description jumped 我正在编写一个函数
  • CSS:100% 字体大小 - 100% 是什么?

    有many http www alistapart com articles howtosizetextincss articles http www w3 org TR CSS2 fonts html font size props an
  • java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener 错误

    您好 我的 struts1 spring 和 hibernate 集成中的动态 Web 应用程序是在 64 位计算机上开发的 它在 64 位计算机上运行良好 但在 32 位计算机上出现 jar 问题 并给出以下错误 SEVERE Error
  • 从 Google Chrome 自动生成 HAR 文件

    基本上我需要的是一种自动化的方法result以下操作 打开一个新选项卡 打开开发者工具中的网络选项卡 加载一个 URL 选择 全部另存为 HAR 通常 建议的解决方案涉及使用PhantomJS http phantomjs org brow
  • WAMP 的 MySQL 数据库文件驻留在哪里?

    我只是好奇 因为我开始学习 PHP 和 MySQL MySQL 的数据库和其他文件驻留在硬盘上的位置 我在 Windows XP SP2 平台上安装了 WAMP 从以下命令的输出中探索变量 mysql gt show variables l
  • Xamarin.Forms 中主从页面的母版页有多宽?

    根据屏幕尺寸 和设备习惯 母版页的宽度会有所不同 在手机上 它约为屏幕宽度的 80 而在平板电脑上 它似乎是一个恒定尺寸 如 320 dp 有人知道这个值的一般公式吗 我想用它在施工期间布置一些元素 当Width属性尚未设置 Edit I
  • 在 django 中使用 Context 时如何禁用 HTML 编码

    在我的 django 应用程序中 我使用模板来构建电子邮件正文 其中一个参数是 url 请注意 url 中有两个参数以 分隔 t loader get template sometemplate c Context foo bar url
  • ES6 Promise / Typescript 和 Bluebird Promise

    我有一个 nodejs typescript 2 项目并使用es6 promise https github com stefanpenner es6 promise包裹 现在我想摆脱额外的包 因为我可以直接在打字稿中定位 ES6 所以我删
  • Git和ssh授权

    我无法使用生成的 ssh 密钥登录 github 我已经按照本手册进行操作 http help github com linux key setup http help github com linux key setup但在步骤 ssh
  • 是否可以在任何现有的 onsubmit/submit 之前绑定一个 Submit() 函数?

    我有一个表格onsubmit属性 我需要绑定一个新的提交事件 并且需要在任何现有的提交函数之前执行该事件 下面的代码演示了这个问题
  • 嵌套砌体对象

    我正在尝试使用容器创建图形视图 因此 如果 A s gt B s gt C s 视图将显示 Bs 内的对象 c 而 Bs 又在 As 内 Something like this 我认为砌体视图非常适合此目的 但我无法使嵌套正常工作 到目前为
  • .NET Ionic.Zip:压缩或未压缩大小,或偏移量超过最大值

    我进行了以下设置 Win2008服务器 Ionic zip 参考模块 用于构建 zip 文件的单独驱动器 NET 4 0 Web 应用程序即时构建 zip 包 并允许客户端下载该包 该系统一直运行良好 直到现在 最近我们添加了一些较大的文件
  • git error“请告诉我你是谁。”和赫罗库

    我当时工作于branch master 并提交到 Git 存储库 一切都很好 我将新应用程序连接到 Heroku 上的这个存储库 我同时致力于 Heroku 和 Git 一切又恢复正常了 除了我无法在 Heroku 上运行 db migra
  • GAE - Python 3.7 - 如何登录?

    我有一个 python 3 7 中的谷歌应用程序引擎项目 我想在其中编写一些日志 我习惯在应用程序引擎 python 2 7 中编程 并且使用简单的代码 logging info hi there 将任何日志写入谷歌云日志控制台 上面的命令