oslo.log – user_identity 格式灵活性

https://blueprints.launchpad.net/oslo.log/+spec/user-identity-format-flexibility

此蓝图的目标是使调整日志行中 user_identity 字段的格式更容易,而无需指定完整的日志格式字符串。

问题描述

  • 我们希望 devstack 使用名称记录身份信息,但默认情况下,我们希望身份信息使用 UUID 值,因为 UUID 值保证是唯一的。

  • 我们不希望 devstack 为各个项目覆盖格式字符串。

  • 我们希望 devstack 能够更改默认格式,而无需指定整个字符串,因为这样会使 devstack 无法了解添加到默认格式字符串中的任何信息。

提议的变更

由于 oslo.context 没有使用 oslo.config,并且错误地强制执行格式化,我们希望将此更改应用于 oslo.log。

让 oslo.log 控制日志输出中 user_identity 值的格式。我们必须将该值保留在 oslo.context 中,但不必再使用它了。

添加一个新的配置选项来指定如何格式化 user_identity 字段。(我们将来可能会发现将其应用于其他字段也很有用,但现在让我们专注于一个。)

更新 oslo.log,使其从 oslo.context 请求值,然后使用从其配置选项获取的值以及从 oslo.context 获取的值构建一个字符串来替换 user_identity。

备选方案

我们可以要求任何想要自定义日志格式的人员替换整个格式字符串,但这使得仅调整日志消息的整体结构标准化时,调整其一部分变得更加困难。

我们可以将配置选项放在 oslo.context 中,但是该库尚未开始使用 oslo.config,并且不应在其内部嵌入日志格式化逻辑。

Impact on Existing APIs

无。为了向后兼容,来自 oslo.context 的 RequestContext 仍然需要提供 user_identity。

安全影响

结果不会比以前更安全或更不安全。

性能影响

一次额外的格式化调用不应产生很大的性能影响。

Configuration Impact

一个新的配置选项,默认设置为产生与我们现在相同的格式。

开发人员影响

devstack 的用户最终能够以更友好的格式查看用户身份信息。

Testing Impact

没有重大变化。

实现

负责人

主要负责人:doug-hellmann

其他贡献者:ihrachyshka

里程碑

完成目标里程碑:liberty-3

工作项

  1. 在 oslo.log 中添加一个新的配置选项来控制 user_identity 值的格式化方式;将其默认设置为 oslo.context 当前的方式

  2. 在 oslo.context 中添加一个新的方法来提供要放入该格式字符串的身份值(或者直接使用整个 context 字典?字典就可以。)

  3. 更新 oslo.log 以构建一个新的字符串并更新从 to_dict() 传递给它的字典

  4. 更新 devstack 以设置新的配置选项,以便使用名称而不是或除了 UUID 之外的方式

孵化

N/A

文档影响

需要记录新的配置选项。

依赖项

参考资料

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode