日志

注意

待办事项(shade) 此文档是从 shade 的角度编写的。需要将其与现有的日志记录指南结合起来,还需要理顺日志记录系统。

openstacksdk 使用 Python Logging。由于 openstacksdk 是一个库,因此它不会自动配置日志记录处理程序,而是期望由调用应用程序来处理。

简单用法

对于只想获得基本日志记录设置而无需深入思考的消费者,有一个辅助方法。如果使用,应在任何其他 openstacksdk 功能之前调用它。

openstack.enable_logging(debug=False, http_debug=False, path=None, stream=None, format_stream=False, format_template='%(asctime)s %(levelname)s: %(name)s %(message)s', handlers=None)

启用日志输出。

辅助函数,用于启用日志记录。此函数可用于调试目的,也可供希望轻松实现“即插即用”的简单应用程序使用。对于更复杂的应用程序或希望获得更多灵活性的应用程序,标准库 logging 包将接收这些消息,并将其发送到您创建的任何处理程序。

参数:
  • debug (bool) – 将此设置为 True 以接收调试消息。

  • http_debug (bool) – 将此设置为 True 以接收包含 HTTP 请求和响应的调试消息。这表示 debug=True

  • path (str) – 如果指定了 path,日志输出将写入该文件,以及 sys.stderr。该路径传递给 logging.FileHandler,它会将消息附加到该文件(如果需要则创建该文件)。

  • stream – 之一 None `` ``sys.stdoutsys.stderr。如果为 None,则不会将任何内容记录到流中。如果不是 None,则控制台输出将记录到此流中。

  • format_stream (bool) – 如果 format_stream 为 False,则为默认值,则将 format_template 应用于 path,但不应用于 stream 输出。如果为 True,则将 format_template 应用于 stream 输出。

  • format_template (str) – 传递给 logging.Formatter 的模板。

返回类型:

import openstack
openstack.enable_logging()

参数 stream 控制将日志消息写入的流。默认值为 sys.stdout,这将导致日志消息写入 STDOUT。可以将其设置为另一个输出流,或设置为 None 以禁用控制台日志记录。

参数 path 设置为将日志记录到文件。默认情况下,如果提供了 path 且未提供 stream,则日志记录仅转到 path

您可以组合参数 pathstream 以同时将日志记录到这两个位置。

要将消息记录到名为 openstack.log 的文件和 stdout 上的控制台

import sys
import openstack

openstack.enable_logging(
    debug=True, path='openstack.log', stream=sys.stdout)

openstack.enable_logging 还设置了其他一些记录器,并抑制了一些由 openstacksdk 用户来说无关紧要或无法采取任何操作的警告或日志消息。

高级用法

openstacksdk 记录到一组不同的命名记录器。

大多数日志记录都设置为记录到根 openstack 记录器。还有其他子记录器,有时会使用它们,主要是为了让用户能够打开或关闭特定类型的日志记录。它们如下所示。

openstack.config

与配置相关的发行问题记录到 openstack.config 记录器。

openstack.iterate_timeout

openstacksdk 需要轮询资源时,它会在一个循环中执行此操作,该循环在迭代之间等待并最终超时。 openstack.iterate_timeout 记录器为每个迭代发出消息,指示它正在等待以及等待多长时间。这些对于长时间运行的任务来说可能很有用,以便知道事情没有卡住,但也会产生很多噪音。

openstack.fnmatch

openstacksdk 将尝试在给定的 name_or_id 参数上使用 fnmatch。这是一项尽力而为的尝试,因此模式缺失会记录到 openstack.fnmatch。用户可能无意使用 fnmatch 模式 - 例如,如果他们正在尝试查找名为 Fedora 24 [official] 的映像,因此这些消息会单独记录。

HTTP 跟踪

HTTP 交互由 keystoneauth 处理。如果您想在使用 openstacksdk 时启用 HTTP 跟踪,并且没有使用 openstack.enable_logging,请将 keystoneauth 记录器的日志级别设置为 DEBUG

有关更多信息,请参阅 https://docs.openstack.org/keystoneauth/2025.2/using-sessions.html#logging

Python Logging

Python logging 是 Python 的标准功能,并根据 Python 版本在 Python 文档中进行了全面记录。

有关 Python v2 的 Python Logging 的更多信息,请参阅 https://docs.pythonlang.cn/2/library/logging.html

有关 Python v3 的 Python Logging 的更多信息,请参阅 https://docs.pythonlang.cn/3/library/logging.html