使用 tflog 包与日志包进行日志记录相比有什么优势?



上下文:我正在开发一个TF提供程序,我可以看到HashiCorp的最新"写入日志输出"文档,他们建议使用tflog包进行日志记录。

也就是说,我可以看到 GCP 的 TF 提供程序仍在使用log包。与log相比,使用tflog有什么优势?

您链接的文档的结构化日志记录部分描述了作者推荐这种不同日志记录策略的理由:

tflog包使用基于 go-hclog 的结构化日志记录。tflog不是将日志编写为具有嵌入变量和值的句子,而是采用描述日志记录事件的句子和一组要记录的变量。当变量与日志描述分开时,可以使用它们以编程方式解析、筛选和搜索日志输出。这种分离还允许系统的其他部分将变量与下游日志输出相关联。

虽然文档中没有明确提到这是一个优势,但它也提到tflog有一个日志级别的概念,并且在撰写本文时,标准库log包中没有相应的概念。

鉴于此,我得出的结论是,与标准库log相比,tflog的两个预期优势是:

  • tflog使用结构化日志记录方法,其中结果中的单独变量是机器可解析的,因此可以通过脚本自动过滤。
  • tflog将日志级别与每条消息相关联,SDK 允许自定义特定执行的日志级别以控制输出量。

我认为要获得任何进一步的背景信息都需要询问SDK的作者,因为这是一个主观的设计权衡,而不是有一个明确正确答案的情况。

我假设一些现有的提供程序继续使用标准库log,只是因为该代码是在tflog存在之前编写的。tflogv0.2.0(显然是第一个公开发布的版本)于 2021 年 12 月发布,而像 Google 云平台提供商这样的大型 Terraform 提供商在此之前已经开发了近十年。

最新更新