如何在厨房测试中捕获 Chef::Log.info

How to capture Chef::Log.info in kitchen test

当我运行

   kitchen test

   kitchen test --log-level info

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

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

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

driver: 流浪汉

提供者:chef-solo

谢谢,

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

更新:从 Test Kitchen 1.7.0 版开始,Martin 的回答不再正确(参见 pull request #950)。

根据 Dynamic Configuration doc、"Since Kitchen 1.7.0 the log level for the provisioner is no longer related to the Kitchen log level."

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

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

我的测试证实:

  • Chef::Log.debug 调用 未被记录 只是 运行 kitchen converge -l debug.
  • Chef::Log.debug 调用 中设置 log_level: debug 后被记录 。kitchen.yml.