如何在测试厨房中获取日志输出?

时间:2016-08-16 20:40:13

标签: chef chef-recipe test-kitchen

我的食谱中有这个:

log mylog1 do
  level :info
  message 'WHY I NO SEE THIS?'
end
log mylog2 do
  level :info
  message 'WHY I NO SEE THIS?'
end

这是我在执行kitchen converge -l debug时看到的:

...
Converging 3 resources
Recipe: mybook::myrecipe
  * log[mylog1] action write
  * log[mylog1] action write
...

3 个答案:

答案 0 :(得分:2)

这个问题分为两部分:

首先,使用" -l debug"传递给厨房的日志级别是厨房可执行文件而不是供应商,在这种情况下" chef-solo & #34 ;.因此,如果您使用调试选项运行厨房,您会看到,配置程序使用 log_level 作为" auto "如下所示,即使厨房处于调试模式:

[SSH] vagrant@127.0.0.1<{:user_known_hosts_file=>"/dev/null",
:paranoid=>false, :port=>"2222", :compression=>false, :compression_level=>0,
:keepalive=>true, :keepalive_interval=>60, :timeout=>15, :keys_only=>true,
:keys=>["/Users/mpriyada/myWorks/.kitchen/kitchen-vagrant/kitchen-default-centos/.vagrant/machines/default/virtualbox/private_key"],
:auth_methods=>["publickey"], :user=>"vagrant"}> (sh -c 'sudo -E /opt/chef/bin/chef-solo
--config /tmp/kitchen/solo.rb --log_level auto --force-formatter --no-color
--json-attributes /tmp/kitchen/dna.json')

这意味着,在厨师独奏记录优先级中,&#34; 自动 &#34;符合&#34; 警告 &#34;水平。 因此,如果在&#34; log&#34;中将日志级别设置为信息,则不会记录任何输出资源。 尝试以下代码,您会发现不同之处:

log "mylog1" do
   level :warn
   message 'WHY I NO SEE THIS?'
end

log "mylog2" do
   level :info
   message 'WHY I NO SEE THIS?'
end

输出:

Recipe: test3::default
   * log[mylog1] action write[2016-08-17T03:55:16+00:00] WARN: WHY I NO SEE THIS?      

   * log[mylog2] action write
Running handlers:
Running handlers complete

现在,第二部分,如果你不想在&#34; auto &#34; log_level ,您可以转到&#34; /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.10.0/ LIB /厨房/供应者/ chef_base.rb &#34;并将硬编码日志级别 自动 更改为 chef-solo 日志记录允许https://docs.chef.io/config_rb_solo.html

答案 1 :(得分:1)

自Kitchen 1.7.0起,您可以在kitchen.yml中配置:

provisioner:
  name: chef_zero
  log_level: info

请参阅this page(似乎未在Kitchen文档中链接)

答案 2 :(得分:0)

使用更新的厨房,您还可以执行kitchen test -D来触发厨房的调试输出并运行chef-client