【问题标题】:How to capture Chef::Log.info in kitchen test如何在厨房测试中捕获 Chef::Log.info
【发布时间】:2024-01-06 08:56:01
【问题描述】:

当我跑步时

   kitchen test

   kitchen test --log-level info

我的食谱中没有日志,即在测试中。

   Chef::Log.info("How to make appear in kitchen output?")

显示在厨房的控制台输出中。无论如何要做到这一点?

司机:流浪者

供应商:主厨独奏

谢谢,

【问题讨论】:

    标签: chef-infra test-kitchen


    【解决方案1】:

    更新:自 Test Kitchen 1.7.0 版起,Martin 的回答不再正确(请参阅 pull request #950)。

    根据Dynamic Configuration doc,“自 Kitchen 1.7.0 起,provisioner 的日志级别不再与 Kitchen 日志级别相关。”

    下面给出了在.kitchen.yml中设置log_level的例子:

    provisioner: name: chef-zero log_level: <%= ENV['CHEF_LOG_LEVEL'] || auto %>

    我的测试证实:

    • Chef::Log.debug 调用没有在简单地运行 kitchen converge -l debug 时被记录。
    • .kitchen.yml 中设置 log_level: debug 后,Chef::Log.debug 调用被记录

    【讨论】:

    【解决方案2】:

    can set the verbose level 在运行测试厨房时,例如kitchen test -l debug。您看到的是默认情况下,Chef 在 WARN 或更高级别运行,因此默认情况下,INFO 是隐藏的。 chef-client 也是如此。在你的厨房命令上使用-l debug 会将-l debug 传递给chef-client 命令,然后你也会看到INFO 级别的日志。

    【讨论】:

    • 嗨 - 我已经尝试过了,但仍然没有看到食谱中的任何日志 - 这适用于 chef-solo 吗? - 实际上忽略 - 文档说它确实 - 我尝试几个不同的日志级别,看看会发生什么
    • 我一直使用这个,所以我很确定这是正确的。不过,我只将它与-l debug 一起使用。