日志¶
注意
待办事项(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.stdout或sys.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。
您可以组合参数 path 和 stream 以同时将日志记录到这两个位置。
要将消息记录到名为 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。