新的日志记录风格

https://blueprints.launchpad.net/sahara/+spec/new-style-logging

根据 https://blueprints.launchpad.net/nova/+spec/log-guidelines 提出的将 Sahara 日志记录重写为统一的 OpenStack 风格

问题描述

目前 Sahara 的日志级别和消息混合在一起,不符合 OpenStack 日志记录指南。

提议的变更

统一我们的日志系统的好方法是遵循主要指南。以下是日志级别的一个简要描述

  • 调试 (Debug): 显示所有内容,由于生成的日志量巨大,可能不适合正常的生产操作(例如,脚本执行、进程执行等)。

  • 信息 (Info): 通常表示成功的服务启动/停止、版本等非错误相关的数据。这应包括大量已完成的积极工作单元(例如,服务设置、集群启动、成功的作业执行)。

  • 警告 (Warning): 表示可能存在系统性问题;潜在的预测性故障通知(例如,作业执行失败)。

  • 错误 (Error): 发生了错误,管理员应研究该事件(例如,集群启动失败,插件违反操作)。

  • 严重 (Critical): 发生了错误,系统可能不稳定,任何消除 Sahara 预期功能的行为;立即寻求管理员的帮助(例如,无法访问 keystone/数据库,插件加载失败)。

以下是集群执行时 LOG 级别的示例

  • 脚本执行

LOG.debug("running configure.sh script")
  • 集群启动

LOG.info(_LI("Hadoop stack installed successfully."))
  • 作业执行失败

LOG.warning(_LW("Can't run job execution {job} (reason: {reason}")).format(
            job = job_execution_id, reason = ex)
  • 无法配置 HDFS

LOG.error(_LE('Configuring HDFS HA failed. {reason}')).format(
          reason = result.text)
  • 集群启动失败

LOG.error(_LE('Install command failed. {reason}')).format(
          reason = result.text)

我们日志系统的附加步骤应该是使用 pep3101 作为所有日志消息的统一格式。一旦我们尝试使我们的代码更具可读性,请在日志消息中使用{<smthg>} 代替 {0}。

替代方案

我们需要遵循 OpenStack 指南,但如果需要,我们可以将插件日志移动到 DEBUG 级别而不是 INFO 级别。应在每个案例中单独讨论。

数据模型影响

REST API 影响

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

实现

负责人

主要负责人

starodubcevna

工作项

  • 统一现有的日志系统

  • 统一日志消息

  • 如有需要,添加额外的日志

依赖项

测试

文档影响

参考资料

https://blueprints.launchpad.net/nova/+spec/log-guidelines https://pythonlang.cn/dev/peps/pep-3101/