diff --git a/lib/integrity.rb b/lib/integrity.rb index acfdab17..fc021f67 100644 --- a/lib/integrity.rb +++ b/lib/integrity.rb @@ -10,6 +10,7 @@ require 'dm-aggregates' require 'yaml' +require 'logger' require 'digest/sha1' require "core_ext/object" @@ -28,8 +29,9 @@ def self.root end def self.default_configuration - @defaults ||= { :database_uri => 'sqlite3::memory:', + @defaults ||= { :database_uri => 'sqlite3::memory:', :export_directory => root / 'exports', + :log => STDOUT, :base_uri => 'http://localhost:8910', :use_basic_auth => false } end @@ -41,4 +43,12 @@ def self.config def self.config=(file) @config = default_configuration.merge(YAML.load_file(file)) end + + def self.logger + @logger ||= Logger.new(config[:log]) + end + + def self.logger=(file) + @logger = Logger.new(file) + end end diff --git a/spec/integrity_spec.rb b/spec/integrity_spec.rb index de44586a..1a815bcc 100644 --- a/spec/integrity_spec.rb +++ b/spec/integrity_spec.rb @@ -8,6 +8,7 @@ specify 'default configuration' do Integrity.default_configuration.should == { :database_uri => 'sqlite3::memory:', :export_directory => Integrity.root / 'exports', + :log => STDOUT, :base_uri => 'http://localhost:8910', :use_basic_auth => false } @@ -46,4 +47,22 @@ end end end + + describe "Logging" do + before(:each) { Integrity.instance_variable_set(:@logger, nil) } + + it "should use Logger" do + Integrity.logger.should be_an_instance_of(Logger) + end + + it "should log to STDOUT by default" do + Logger.should_receive(:new).with(STDOUT) + Integrity.logger + end + + specify "Setting the log file create a new Logger logging to given file" do + Logger.should_receive(:new).with("/var/log/integrity.log") + Integrity.logger = "/var/log/integrity.log" + end + end end