Cucumber / Savon省略或删除日志记录输出

时间:2013-03-06 18:32:06

标签: ruby logging cucumber savon

在运行黄瓜测试时,我得到了(除测试结果外)很多与调试/日志相关的输出:

D, [2013-03-06T12:21:38.911829 #49031] DEBUG -- : SOAP request:
D, [2013-03-06T12:21:38.911919 #49031] DEBUG -- : Pragma: no-cache, SOAPAction: "", Content-Type: text/xml;charset=UTF-8, Content-Length: 1592
W, [2013-03-06T12:21:38.912360 #49031]  WARN -- : HTTPI executes HTTP POST using the httpclient adapter
D, [2013-03-06T12:21:39.410335 #49031] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
...

有没有办法关闭此输出?我尝试按照this post中的说明操作,我的config_spec.rb文件是:

require "spec_helper"

describe Savon::Config do

  let(:config) {
    config = Savon::Config.new
    config._logger = Savon::Logger.new
    config.log_level = :error     # changing the log level
    HTTPI.log = false           # to total silent the logging.
    config

  }

  describe "#clone" do
    it "clones the logger" do
      logger = config.logger
      clone = config.clone

      logger.should_not equal(clone.logger)
    end
  end

  it "allows to change the logger" do
    logger = Logger.new("/dev/null")
    config.logger = logger
    config._logger.subject.should equal(logger)
  end

  it "allows to change the log level" do
    Savon::Request.log_level = :info
    config.log_level = :error
    config._logger.level.should == :error
  end

  it "allows to enable/disable logging" do
    config.log = false
    config._logger.should be_a(Savon::NullLogger)
    config.log = false
    config._logger.should be_a(Savon::Logger)
  end

end

但是当我进行黄瓜测试时,记录仍然显示。

2 个答案:

答案 0 :(得分:10)

通过查看Savon API的文档,您似乎可以通过执行以下操作来使日志记录静音:

Savon.configure do |config|
  config.log = false
 end

上面的代码段可以放在Cucumber Worldfeatures/support/env.rb中,以便在黄瓜中记录日志。

答案 1 :(得分:1)

日志可能对调试很有用。因此,不要完全沉默,而是将它们放在rails日志中更好。

以下是如何在savon 2中执行此操作:

# config/initializers/savon.rb
HTTPI.logger = Rails.logger

# when initializing client
@client = Savon.client wsdl: '...', logger: Rails.logger