2014-01-17 45 views
4

Sinatra的新手;我正在運行一些rspec測試,但在日誌中出現一堆不需要的噪音。我如何擺脫日誌中的過度噪音?我仔細檢查了環境設置爲:test,這意味着應該將記錄器級別設置爲WARN而不是DEBUG。Sinatra:運行rspec測試時的日誌噪音

spec_helper:

require "./app" 
require "sinatra" 
require "rspec" 
require "rack/test" 
require "database_cleaner" 
require "factory_girl" 

set :environment, :test 

FactoryGirl.definition_file_paths = %w{./factories ./test/factories ./spec/factories} 
FactoryGirl.find_definitions 

RSpec.configure do |config| 
    config.include Rack::Test::Methods 
    config.include FactoryGirl::Syntax::Methods 

    # Use color in STDOUT 
    config.color_enabled = true 

    # Use color not only in STDOUT but also in pagers and files 
    config.tty = true 

    # Use the specified formatter 
    config.formatter = :documentation # :progress, :html, :textmate 

    config.order = "random" 

    config.before(:suite) do 
    DatabaseCleaner.clean_with(:deletion) 
    end 

    config.before(:each) do 
    DatabaseCleaner.strategy = :deletion 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
end 

def app 
    Sinatra::Application 
end 

app.rb

configure :test do 
    set :database, 'sqlite3:///test.sqlite' 
    set :logging, Logger::ERROR 
end 

噪聲:

D, [2014-01-16T22:14:28.481790 #75797] DEBUG -- : (0.6ms) commit transaction 
D, [2014-01-16T22:14:28.484622 #75797] DEBUG -- : (0.1ms) begin transaction 
+1

根據[此線程的第二個答案](http://stackoverflow.com/questions/8429326/change-log-level-in-sinatra),'Logger :: ERROR'需要響應:to_int。你可以啓動一個控制檯並試一試嗎?如果它不響應to_int,sinatra將使用默認的日誌記錄設置。 –

回答

3

至於本的回答是:我把這個在我的規格幫手:

ActiveRecord::Base.logger = nil unless ENV['LOG'] == true 

有一些罕見的情況下,我發現輸出有用的,包括條件與環境變量使得它超級容易轉登錄,默認情況下關閉。

+0

感謝您的提示!這是一個好方法 – Ben

+0

非常歡迎:) –

3

事實證明,噪聲爲c從ActiveRecord記錄器運行。 在規範助手中設置ActiveRecord::Base.logger = nil擺脫了SQL噪音。