【问题标题】:How do I get log output in test kitchen?如何在测试厨房中获取日志输出?
【发布时间】:2016-12-23 08:53:51
【问题描述】:

我的食谱里有这个:

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

【问题讨论】:

    标签: chef-infra chef-recipe test-kitchen


    【解决方案1】:

    对于较新的 Kitchen,您还可以执行 kitchen test -D 来触发厨房的调试输出和您的 chef-client 运行。

    【讨论】:

      【解决方案2】:

      从 Kitchen 1.7.0 开始,您可以在 kitchen.yml 中进行配置:

      provisioner:
        name: chef_zero
        log_level: info
      

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

      【讨论】:

        【解决方案3】:

        这个问题有两个部分:

        首先,使用“-l debug”传递给厨房的日志级别是针对kitchen 可执行文件,而不是针对provisioner,在本例中为“厨师独奏”。因此,如果您使用调试选项运行厨房,您会看到,provisioner 以 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')
        

        这意味着,在 chef-solo 日志记录优先级中,“auto”与“warn “ 等级。 如果日志级别设置为“日志”资源中的信息,则不会记录任何输出。试试下面的代码,你会发现差异:

        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
        

        现在,第二部分,如果您不想在“autolog_level 中运行您的厨房,您可以转到“ /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.10.0/lib/kitchen/provisioner/chef_base.rb " 并将 硬编码日志级别auto 更改为任何 chef-solo日志记录许可https://docs.chef.io/config_rb_solo.html

        【讨论】:

        • 我可以在 .kitchen.yml 或我的食谱或食谱中的某个配置文件中进行设置,而不是修改实际的厨房代码吗?
        • 作为,它是硬编码的。恐怕无能为力。
        • 厨房日志级别可以通过环境变量改变:KITCHEN_LOG='DEBUG' kitchen converge
        • @Duke - 问题是在运行厨房时更改 chef-solo/chef-zero 日志级别更改。
        猜你喜欢
        • 1970-01-01
        • 2020-05-19
        • 2021-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        相关资源
        最近更新 更多