2016-08-16 52 views
0

我有这个在我的食谱:如何在测试厨房中获得日志输出?

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 
... 

回答

2

有此问题的两个部分:

首先,通过日志级别带有“-l调试”的厨房是用于厨房可执行文件而不是用于提供器,在这种情况下是“厨师独奏“。因此,如果您运行调试选项的厨房,你会看到,供应方与LOG_LEVEL运行为“汽车”,如下图,甚至当厨房在调试模式:

[SSH] [email protected]<{: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') 

这意味着,在厨师独奏日志优先级,“汽车”与“警告”级别相同“级别。 因此,如果日志级别设置为“日志”资源中的信息,则不会记录输出。尝试下面的代码,你看到的区别:

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 

现在,第二部分,如果你不想在运行你的厨房 “汽车log_level,你可以去“/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.10.0/lib/kitchen/provisioner/chef_base.rb“,改变从汽车到任何厨师独奏采伐许可证https://docs.chef.io/config_rb_solo.html硬编码日志级别

+0

我可以设置这个英寸kitchen.yml或配置文件在我的食谱或食谱中的某处,而不是修改实际的厨房代码? – red888

+0

由于它的硬编码。恐怕没有太多可以做的事情。 –

+0

厨房日志级别可以通过环境变量进行更改:'KITCHEN_LOG ='DEBUG'厨房收敛' – Duke

0

由于厨房1.7.0您可以在kitchen.yml配置此:

provisioner: 
    name: chef_zero 
    log_level: info 

this page(似乎不被链接到厨房文档)

相关问题